我有一个数据库,我需要避免插入重复。的要求是:SQL独特的和插入的设置约束
对于行匹配第1列的子集,不能有任何具有匹配第1列具有相同的列2.
对于行的子集,不能有任何具有相同的列3和4
我是新来的SQL所以是有,当我创建数据库(创建表)或做我必须做一个选择之前手动完成这些检查设置这些关系的一种方式插入表中?
我有一个数据库,我需要避免插入重复。的要求是:SQL独特的和插入的设置约束
对于行匹配第1列的子集,不能有任何具有匹配第1列具有相同的列2.
对于行的子集,不能有任何具有相同的列3和4
我是新来的SQL所以是有,当我创建数据库(创建表)或做我必须做一个选择之前手动完成这些检查设置这些关系的一种方式插入表中?
实际上,您需要第1列和第2列是唯一的,第1,3和第4列也是唯一的。所以当你创建表格时,你可以使用两个UNIQUE constaints:
CREATE TABLE tbl (
col1 varchar(255),
col2 varchar(255),
col3 varchar(255),
col4 varchar(255),
CONSTRAINT uc_first UNIQUE(col1, col2),
CONSTRAINT uc_second UNIQUE(col1, col3, col4)
)
只是为了让球滚动...
你能马上回去插入后的基础上删除您提到的约束上重复的行?
呃......要对它有礼貌。是的你可以;但不,这样做效率会非常低下。 – 2009-08-23 11:09:44
够公平的。我从Todd Owen的回答中了解到,在创建表时,CONSTRAINT是必需的。我想它可以在创建后更改。回到手册... – pavium 2009-08-23 13:11:55
谢谢。有一两件事,有没有办法知道哪些约束SQLite中被触发?谷歌显示了一些人抱怨说他们需要做字符串比较(.IsSameAs( “SQLITE_CONSTRAINT [19]:第1列,3,4,是不是唯一的”))。似乎klunky。 – max 2009-08-23 11:16:27