如何使用外键引用创建表?

时间:2014-04-01 03:56:24

标签: sql sql-server

这是我创建的两张桌子。

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表时,我都会收到以下错误:

  

Ms 1769,Level 16,State 1,Line 26
  外键' EmpID'引用无效列' EmpID'参考表格' WagesPayable'。

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

2 个答案:

答案 0 :(得分: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 :(得分: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)
)