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

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

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

有帮助吗?

解决方案

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

ALTER TABLE dbo.MyTable WITH CHECK ADD
    CONSTRAINT UQ_MyTable_BookTitle UNIQUE (BookID, Title)

CREATE UNIQUE INDEX IXU_MyTable_BookTitle ON dbo.MyTable (BookID, Title)

其他提示

使用列BookID和Title(索引可能包含多个列,而不仅仅是一列)在章节上创建UNIQUE INDEX

因此,在 Chapter 中, Book Title 的组合必须是唯一的。只需创建一个跨越这些列的UNIQUE索引,就完成了。

顺便说一句,我不禁想到了

  

(我不想要两本书名相同)

如果你真的在谈论现实世界的书籍,

会回来咬你。如果这只是一个例子,那就不用担心了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top