加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 14:03:20 所属栏目:MsSql教程 来源:网络整理
导读:? ? ? ?? 第二种情况:可能是被引用表中有多个主键 ? ? ? alter table te_evaluationscore add constraint FK_teevaluationscore_tsuser foreign key(user_id,branch_id) references ts_user(user_id,branch_id) ? ? ? ? ? ??? SQLServer2005/在被引用表 'ta

? ? ? ??

第二种情况:可能是被引用表中有多个主键

? ? ? alter table te_evaluationscore add constraint FK_teevaluationscore_tsuser foreign key(user_id,branch_id) references ts_user(user_id,branch_id)


? ? ? ? ? ???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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读