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

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

WBOY
WBOYOriginal
2016-06-07 15:52:071877browse

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn