引用的表中没有主键或候选键

时间:2015-07-01 20:06:45

标签: sql-server foreign-keys

我有两张桌子:

表1

  

c_ID float - PK
  字段1
  字段2
  字段3
  p_ID [uniqueidentifier]

表2

  

p_ID nvarchar
  s_ID float

其中p_ID和s_ID都是主键的一部分。

我尝试在Table1上创建一个外键:

ALTER TABLE Table1
ADD CONSTRAINT FK_Table1_Table2 FOREIGN KEY (p_ID) 
    REFERENCES Table2(p_ID) 

我收到了一个错误:

  

引用的表中没有主键或候选键   ' dbo.Table2'与外键中的引用列列表匹配   ' FK_Table1_Table2'

我是否收到此错误,因为p_ID的数据类型是uniqueidentifier,而Table2 p_ID中的数据类型是nvarchar?有解决方法吗?

1 个答案:

答案 0 :(得分:1)

您只需使用包含PK

中相同列的FK
create table ParentTest (
SomeNumber int,
Name varchar(25),
PRIMARY KEY (SomeNumber, Name)
)


create table ChildTest (
SomeValue varchar(25),
SomeNumber int,
Name varchar(25),
FOREIGN KEY (SomeNumber, Name) references ParentTest (SomeNumber, Name)
)