sqlServer2005/在被引用表 'tab2' 中没有与外键 'fk_tab12tab2' 中的引用列列表匹配的主键或候选键。
这个原因是由于表2被引用的的字段不是候选键或者不是主键,说白了就是确保它是唯一的;
CREATE TABLE tab1
( id int,
name varchar(30)
);
CREATE TABLE tab2
(
name2 VARCHAR(30)
);
--将表tab2的字段name2作为tab1的外键,
ALTER TABLE tab1 ADD CONSTRAINT fk_tab12tab2 FOREIGN KEY (name) REFERENCES tab2(name2);
--错误信息
/*消息 1776,级别 16,状态 0,第 1 行
在被引用表 'tab2' 中没有与外键 'fk_tab12tab2' 中的引用列列表匹配的主键或候选键。
消息 1750,级别 16,状态 0,第 1 行
无法创建约束。请参阅前面的错误消息。
*/
//将字段name2作为主键,如果按照如下方式建立表,那么结果通过。
CREATE TABLE tab2
(
name2 VARCHAR(30) PRIMARY KEY
);
--命令已成功完成。
//将字段name2设为唯一,
CREATE TABLE tab2
(
name2 VARCHAR(30) UNIQUE
);
那么结果也是通过的。
--命令已成功完成。
如果要删除约束:
ALTER TABLE tab1 DROP CONSTRAINT fk_tab12tab2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。