急,sqlserver外键问题【高分】

来源:百度知道 编辑:UC知道 时间:2024/06/15 02:09:11
CREATE TABLE tBSC(
BID int NOT NULL identity,
BSCNAME varchar(120) NULL,
DIAL_NUM varchar(20) NULL,
DIALED_NUM varchar(40) NULL,
PRIMARY KEY CLUSTERED (BID),
)

CREATE TABLE tMONITOR(
MID int NOT NULL identity,
MONITORLOC varchar(120) NOT NULL,
MONITORNUM varchar(20) NULL,
BSCNAME varchar(40) NULL,
MONITORTEL varchar(20) NULL,
PRIMARY KEY CLUSTERED (MID),
FOREIGN KEY (BSCNAME) REFERENCES tBSC (BSCNAME)
)

第二段执行时报错:

在被引用表 'tBSC' 中没有与外键 'FK__tMONITOR__BSCNAM__656C112C' 中的引用列列表匹配的主键或候选键。
如果把BSCNAME设为主键就没有问题,为什么不是主键设不了外键约束呢?有这么一说吗?应该怎么做

FOREIGN KEY (BSCNAME) REFERENCES tBSC (BSCNAME)

你引用tBSC的BSCNAME 但是那个列不是主键
所以外键约束也无法建立

外键引用的字段 必须是主键

从表中的外键必须是主表的主键。
FOREIGN KEY (X) REFERENCES tBSC (Y)
“Y”必须是主键
而且“X”和“Y”的数据类型要相同

外键必须是其他表的主键

一张表的外键 必然是另一张表的主键,就这个原理,就象房子有了一层才能有二层一样

这个是硬性的规定

不是主键设不了外键约束