您好,欢迎访问一九零五行业门户网

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

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
其它类似信息

推荐信息