2014-04-01 44 views
-1

这是我创建的两个表格。如何使用外键引用创建表?

CREATE TABLE Employee 
(
    EmpID int IDENTITY(1,1) PRIMARY KEY, 
    LastName VARCHAR(50) NOT NULL, 
    FirstName VARCHAR(50) NOT NULL, 
    StreetAddress VARCHAR(75), 
    City VARCHAR(255), 
    State VARCHAR(25), 
    ZipCode VARCHAR(5), 
    EmployeeType VARCHAR (20), 
    HourlyWage DECIMAL(18,2) 
) 

CREATE TABLE WagesPayable 
(
    FOREIGN KEY (EmpID) REFERENCES Employee (EmpID), 
    WorkedHours DECIMAL(18,2), 
    PayRate DECIMAL(18,2), 
    TotalPayable AS (WorkedHours * PayRate), 
    DateLastPaid DATETIME 
) 

每当我试图创建WagesPayable表我得到以下错误:

Msg 1769, Level 16, State 1, Line 26
Foreign key 'EmpID' references invalid column 'EmpID' in referencing table 'WagesPayable'.

缺少什么我在这里?非常感谢您的帮助。

+0

EmpId int外键引用员工(EmpId) – user3217843

+1

看看它:http://www.w3schools.com/sql/sql_foreignkey.asp请在提问之前对您的部分进行一些调查。 –

回答

2

您需要参考以前申报列。您可以一步完成此操作:

CREATE TABLE WagesPayable 
(
EmpID int REFERENCES Employee (EmpID), 
WorkedHours DECIMAL(18,2), 
PayRate DECIMAL(18,2), 
TotalPayable AS (WorkedHours * PayRate), 
DateLastPaid DATETIME 
) 

SQL小提琴是here

1

您并未为表WagesPayable创建列EmpID。

所以,首先你需要创建列,然后引用它作为这样一个外键:

CREATE TABLE WagesPayable 
(
EmpID int, 
WorkedHours DECIMAL(18,2), 
PayRate DECIMAL(18,2), 
TotalPayable AS (WorkedHours * PayRate), 
DateLastPaid DATETIME, 
FOREIGN KEY (EmpID) REFERENCES Employee (EmpID) 
)