如何在SQL Server 2008中的关系范围中指定列是唯一的?
-
06-07-2019 - |
题
通过示例更容易。我有两个表:书籍和章节。两者都有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索引,就完成了。
顺便说一句,我不禁想到了
如果你真的在谈论现实世界的书籍,(我不想要两本书名相同)
会回来咬你。如果这只是一个例子,那就不用担心了。
不隶属于 StackOverflow