热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

SQLServer2005/在被引用表'tab2'中没有与外键'f

SQLServer2005在被引用表tab2中没有与外键fk_tab12tab2中的引用列列表匹配的主键或候选键。这个原因是由于表2被引用的的字段不是候选键或者不是主键,说白了就是确保它是唯一的;CREATETABLEtab1(idint,namevarchar(30));CREATETABLEt

SQLServer2005/在被引用表 'tab2' 中没有与外键 'fk_tab12tab2' 中的引用列列表匹配的主键或候选键。 这个原因是由于表2被引用的的字段不是候选键或者不是主键,说白了就是确保它是唯一的; CREATE TABLE tab1 ( id int, name varchar(30) ); CREATE TABLE t

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

推荐阅读
author-avatar
感动宇宙coolboy_796
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有