我有两张桌子:
CREATE TABLE InmarsatZenith.dbo.ClientJob
(JobRef int PRIMARY KEY NOT NULL,
IntRef uniqueidentifier,
CopyDeadline datetime,
PublicationDate datetime,
Repeat bit,
BusinessType nvarchar(25),
Sector nvarchar(30),
Lang nvarchar(15),
Format nvarchar(25),
CreativeRotation nvarchar(50),
TipinType nvarchar(25))
和
CREATE TABLE InmarsatZenith.dbo.Comment
(ID int identity PRIMARY KEY NOT NULL,
IntRef uniqueidentifier,
CreatedDate datetime,
ModifiedDate datetime,
CreatedBy nvarchar(25),
ModifiedBy nvarchar(25),
Comment text)
我希望能够创建多个“注释”,这些“注释”都基于“IntRef”字段链接回ClientJob表。因此,基本上每次发表评论时,都会指定ClientJob的INTREF,然后当我从ClientJob表中提取所有详细信息时,所有评论都随附。我已经尝试在两个表之间建立关系,但SQL Server声明主键不是ClientJob表中的IntRef字段,因此我无法将Comments表链接到它。有没有办法在ClientJob表中有多个主键?!或者另一种更有效的方法。关系是“1 ClientJob有很多评论”。
非常感谢,
亲切的问候。
答案 0 :(得分:2)
您只能在任何表上拥有一个主键。但您也可以与唯一索引建立外键关系。
假设您的引用是“一个ClientJob可以有多个注释,但每个注释只属于一个ClientJob”,那么这两个步骤将为您创建必要的位:
1)在“ClientJob”表中的“IntRef”上放置一个唯一索引:
CREATE UNIQUE INDEX UIX_IntRef
ON dbo.ClientJob(IntRef)
2)将一个外键关系从Comments添加到ClientJob:
ALTER TABLE dbo.Comments
ADD CONSTRAINT FK_Comment_ClientJob
FOREIGN KEY (IntRef) REFERENCES dbo.ClientJob(IntRef)
应该这样做!
马克
答案 1 :(得分:0)
对于外键,您需要Primay Key或唯一索引。在InmarsatZenith.dbo.ClientJob表中为IntRef添加唯一索引