如何在SQL Server 2008中的关系范围中指定列是唯一的?

pup*_*eno 0 sql t-sql sql-server constraints sql-server-2008

通过一个例子更容易.我有两个表:书籍和章节.两者都有Title和Id列.章节还有一个Book列,它是Books.Id的外键.Books.Title是独一无二的(我不想要两本同名书籍).

现在我的问题是定义Chapter.Title唯一性.只要Books.Id是相同的,我希望它是独一无二的.因此,一本书可能没有两章具有相同的标题,但两章不同的书可能在章节中具有相同的标题.

这可能在SQL Server 2008上吗?怎么样?

gbn*_*gbn 5

UNIQUE CONSTRAINT或UNIQUE索引.任何一个人都会这样做.

ALTER TABLE dbo.MyTable WITH CHECK ADD
    CONSTRAINT UQ_MyTable_BookTitle UNIQUE (BookID, Title)
Run Code Online (Sandbox Code Playgroud)

要么

CREATE UNIQUE INDEX IXU_MyTable_BookTitle ON dbo.MyTable (BookID, Title)
Run Code Online (Sandbox Code Playgroud)