【发布时间】:2009-08-23 10:06:32
【问题描述】:
我有一个数据库,我需要在其中避免插入重复项。要求是:
对于与第 1 列匹配的行的子集,不能有任何与第 2 列相同的行。
对于与第 1 列匹配的行的子集,不能有任何具有相同第 3 列和第 4 列的行。
我是 SQL 新手,所以有没有办法在创建数据库(创建表)时设置这些关系,或者我必须在插入表之前进行选择并手动进行这些检查?
【问题讨论】:
我有一个数据库,我需要在其中避免插入重复项。要求是:
对于与第 1 列匹配的行的子集,不能有任何与第 2 列相同的行。
对于与第 1 列匹配的行的子集,不能有任何具有相同第 3 列和第 4 列的行。
我是 SQL 新手,所以有没有办法在创建数据库(创建表)时设置这些关系,或者我必须在插入表之前进行选择并手动进行这些检查?
【问题讨论】:
实际上,您需要第 1 列和第 2 列是唯一的,并且第 1,3 和 4 列也是唯一的。所以当你创建表时,你可以使用两个 UNIQUE 常量:
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)
)
【讨论】:
只是为了让球滚动......
你能在插入和删除重复行之后立即返回吗?
【讨论】: