这就是我想要创建的内容:
CREATE TABLE VEHICLEREPORT
(
DeptID char(2) not null,
Vin# char(3) not null,
Miles varchar(6) not null,
Bill# char(3) not null,
EID char(3) not null,
PRIMARY KEY (DeptID, Vin#),
FOREIGN KEY (bill#) REFERENCES billing,
FOREIGN KEY (EID) REFERENCES Employee
);
问题在于我对结算的提及。错误说:
外键'FK__VEHICLERE__Bill #__ 5AEE82B9'的引用列列表中的列数与引用表'Billing'中主键的列数不匹配。
但我的结算表输入正常:
CREATE TABLE BILLING
(
VIN# char(3),
BILL# char(3),
PRIMARY KEY (VIN#, Bill#),
FOREIGN KEY (VIN#) REFERENCES vehicle
);
我对此缺少什么?
感谢帮助。
答案 0 :(得分:1)
如果您认为外键是在两个表之间建立父子关系,那么父侧列必须是唯一的。
来自Wikipedia:
在关系数据库的上下文中,外键是一个表中的一个字段(或字段集合),它唯一地标识另一个表或同一个表的一行。 ...简单来说,外键在第二个表中定义,但它引用第一个表中的主键或唯一键。
在您的示例中,无法保证VIN#在VEHICLEREPORT中是唯一的。以下是您的选择
此外,如果VIN#是唯一的(上面的案例1),您应该考虑为什么DeptID存在于PK中。也许最后的正确修复是从主键中删除DeptID。