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