这是我创建的两张桌子。
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'。
我在这里缺少什么?非常感谢您的帮助。
答案 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)
)