一组列在sql数据库中是唯一键

时间:2014-08-14 07:27:17

标签: sql sql-server

如何在sql server数据库中将一组列设为唯一键? 例如:我有一个按列只有一个表的数据库1_book 2_page 3_line 4_word我想搜索一些书中的单词并记录这些信息。 问题出在哪儿?如果它在一行中找到两次或更多的单词,它会将相同的记录保存到table.it对我来说对于一行重复一次单词的次数并不重要。我想要一个或多个重复的单词保存信息。  有什么方法可以说每条记录都应该是唯一的吗? 在将表格中的记录插入表格之前搜索记录是不合理的。不是吗?

2 个答案:

答案 0 :(得分:0)

您的意思是,您不知道如何创建复合键?良好:

alter table dbo.Words add constraint PK_Words primary key (
  1_book, 2_page, 3_line, 4_word
);

如果您在添加数据时不想要严重违规,请使用merge代替insert(假设您的SQL Server版本为2008或更高版本)。

答案 1 :(得分:0)

只需为您的表创建一个unique constraint :( ms sql-server的示例)

ALTER TABLE <yourtablename> ADD CONSTRAINT
            UniqueEntries UNIQUE NONCLUSTERED
    (
            1_book, 2_page, 3_line, 4_word
    )

如果您不想收到错误,只是忽略同一行中同一个单词的其他添加,您可以使用IGNORE_DUP_KEY = ON扩展约束

示例:

ALTER TABLE <yourtablename> ADD CONSTRAINT
            UniqueEntries UNIQUE NONCLUSTERED 
    (
                1_book, 2_page, 3_line, 4_word
    ) WITH (IGNORE_DUP_KEY = ON)

然后将隐藏忽略已存在记录的插入。