SQLServer2005在被引用表 'tab2' 中没有与外键 'fk_tab12tab2' 中的引用列列表匹配的主键或候选键。

SQLServer2005在被引用表 'tab2' 中没有与外键 'fk_tab12tab2' 中的引用列列表匹配的主键或候选键。,第1张

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

                      sqlServer2005/在被引用表 'tab2' 中没有与外键 'fk_tab12tab2' 中的引用列列表匹配的主键或候选键。@H_404_8@

  这个原因是由于表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

总结

以上是内存溢出为你收集整理的SQLServer2005/在被引用表 'tab2' 中没有与外键 'fk_tab12tab2' 中的引用列列表匹配的主键或候选键。全部内容,希望文章能够帮你解决SQLServer2005/在被引用表 'tab2' 中没有与外键 'fk_tab12tab2' 中的引用列列表匹配的主键或候选键。所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1182077.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存