【发布时间】:2018-09-11 02:17:32
【问题描述】:
当引用表中的主键是两个字段时,如何添加外键。 在讲师给出的 ERD 图中,它显示表 product 中的两个字段(maker 和 model)都充当主键。 另一方面,在 DSD 图中,它显示了“PC”表中的字段模型是该表的主键,也是引用表产品中字段模型的外键。
当尝试在 SQL Server 中执行下面的代码时,会出现错误:
Msg 1774, Level 16, State 0, Line 10 外键'FK__PC__model__66603565'的引用列列表确实 与引用表“产品”中的主键不匹配。 消息 1750,级别 16,状态 1,第 10 行无法创建约束或 指数。查看以前的错误。
create table Product(
maker nvarchar(50) not null ,
model int not null ,
type nvarchar(50) not null,
CONSTRAINT PK_MAKER_MODEL PRIMARY KEY (maker,model),
CONSTRAINT CH_TYPE check(type in ('PC','LAPTOP','PRINTER'))
)
-------------------------------------------------------------
create table PC(
model int not null ,
speed nvarchar(50),
ram nvarchar(50),
hd nvarchar(50),
price dec(12,2),
FOREIGN KEY ( model) REFERENCES Product
ON DELETE NO ACTION
)
【问题讨论】:
标签: sql sql-server