1

我有两张桌子:

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 有很多评论”。

非常感谢帮助,

亲切的问候。

4

2 回答 2

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)

应该这样做!

马克

于 2009-09-04T09:41:15.260 回答
0

对于外键,您需要主键或唯一索引。将唯一索引放入 InmarsatZenith.dbo.ClientJob 表中的 IntRef

于 2009-09-04T09:35:28.890 回答