添加外键,SQL SERVER 2008

jpa*_*lov 27 t-sql sql-server-2008

我试图将一个外键添加到表中,它给我以下错误:

引用表'tbl_Person'中没有主键或候选键与外键'P_ID'中的引用列列表匹配.

我有一个tbl_Person,定义为:

P_ID INT (Primary Key)
f_Name,
l_Name
Run Code Online (Sandbox Code Playgroud)

另一个表是一个注释表,定义如下:

C_ID INT,
Comments,
P_ID (should be the foreign key)
Run Code Online (Sandbox Code Playgroud)

尝试创建一对多关系表,因此当用户添加注释时,它会被引用给他,同时,他可以在不初始化新注释的情况下添加到注释中.希望这有点意义.

例如:Randy Bing输入"我喜欢SQL",他的ID是1,f_Name是Randy,l_Name是Bing,他的评论是"我喜欢Sql".他的评论应该存储一个唯一的ID,并导入他的P_ID.

稍后当Randy想要使用与P_ID匹配的相同C_ID添加注释而不创建新的C_ID.

这是代码:

ALTER TABLE tbl_Comments 
ADD CONSTRAINT P_ID
FOREIGN KEY (P_ID) 
REFERENCES tbl_Person(P_ID)
Run Code Online (Sandbox Code Playgroud)

我接近正确的轨道吗?

gbn*_*gbn 78

此错误通常表示"注释"和"人员"之间的数据类型不同,假设这是实际消息

SQL应该是这个

ALTER TABLE tbl_Comments WITH CHECK ADD
 CONSTRAINT FK_Comments_Person FOREIGN KEY (P_ID) REFERENCES tbl_Person (P_ID)
Run Code Online (Sandbox Code Playgroud)

这与您添加的内容相符.所以:

  • 检查数据类型是两个 INT
  • 确保P_ID是tbl_Person上的主键
  • (编辑,2011年12月)colchar列的排序规则和长度也必须相同