• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

mysql 搞代码 4年前 (2022-01-09) 15次浏览 已收录 0个评论

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本文来源gao@!dai!ma.com搞$$代^@码!网! 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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:SQLServer2005/在被引用表 'tab2' 中没有与外键 'f

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址