sql唯一性和在插入上设置约束

sql唯一性和在插入上设置约束,sql,database,sqlite,Sql,Database,Sqlite,我有一个数据库,需要避免插入重复项。这些要求是: 对于具有匹配列1的行子集,不能有任何具有相同列2的行 对于具有匹配列1的行子集,不能有任何具有相同列3和4的行 我是SQL新手,所以在创建数据库(创建表)时有没有办法设置这些关系,或者在插入表之前必须手动进行选择并执行这些检查?只是为了让事情顺利进行 你能在插入后立即返回并根据你提到的限制删除重复的行吗?只是为了让事情顺利进行 您能否在插入后立即返回,并根据您提到的限制删除重复的行?实际上,您需要第1列和第2列是唯一的,第1、3和4列也是唯一的。

我有一个数据库,需要避免插入重复项。这些要求是:

对于具有匹配列1的行子集,不能有任何具有相同列2的行

对于具有匹配列1的行子集,不能有任何具有相同列3和4的行


我是SQL新手,所以在创建数据库(创建表)时有没有办法设置这些关系,或者在插入表之前必须手动进行选择并执行这些检查?

只是为了让事情顺利进行


你能在插入后立即返回并根据你提到的限制删除重复的行吗?

只是为了让事情顺利进行


您能否在插入后立即返回,并根据您提到的限制删除重复的行?

实际上,您需要第1列和第2列是唯一的,第1、3和4列也是唯一的。因此,在创建表时,可以使用两个唯一的常量:

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)
)

实际上,您需要第1列和第2列是唯一的,第1列、第3列和第4列也是唯一的。因此,在创建表时,可以使用两个唯一的常量:

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)
)

呃…礼貌一点。是的,你可以;但不,这样做效率会非常低。这很公平。我从Todd Owen的回答中了解到,创建表时,约束是必要的。我想它可以在创建后更改。回到手册上…呃…礼貌一点。是的,你可以;但不,这样做效率会非常低。这很公平。我从Todd Owen的回答中了解到,创建表时,约束是必要的。我想它可以在创建后更改。回到手册上…谢谢。有一件事,有没有办法知道在sqlite中触发了哪个约束?Google显示一些人抱怨他们需要进行字符串比较(.IsSameAs(“SQLITE_约束[19]:第1、3、4列不是唯一的”))。看起来很糟糕,谢谢。有一件事,有没有办法知道在sqlite中触发了哪个约束?Google显示一些人抱怨他们需要进行字符串比较(.IsSameAs(“SQLITE_约束[19]:第1、3、4列不是唯一的”))。看起来很糟糕。