如何插入多行或值,并避免在以下架构中重复。
表架构是
id,subject1,subject2,subject3
id自动递增。
副本将是所有subject1,subject2,subject3已经以完全相同的顺序存在于记录中的位置。
INSERT INTO "table_name" ("subject1","subject2","subject3")
VALUES ("cats", "dogs", "hamsters")
VALUES ("squirrels", "badgers", "minxes")
VALUES ("moose", "deer", "ocelots")
在表中,假设我已经有
的记录id,subject1,subject2,subject3
1,"cats", "dogs", "hamsters"
所以我希望它只是插入
VALUES ("squirrels", "badgers", "minxes")
VALUES ("moose", "deer", "ocelots")
我已经看到了关于避免单个项目重复的答案,但不是3个。
答案 0 :(得分:2)
您想要将UNIQUE
约束添加到表中。如果单独编写UNIQUE
约束,则可以更清楚地将其应用于任意列组合。
CREATE TABLE table_name (
subject1 VARCHAR(30),
subject2 VARCHAR(30),
subject3 VARCHAR(30),
UNIQUE (subject1, subject2, subject3)
);
答案 1 :(得分:1)
您需要在三列上使用唯一键。
表定义示例
CREATE TABLE `table_name` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'PK',
`subject1` varchar(64) NOT NULL,
`subject2` varchar(64) NOT NULL,
`subject3` varchar(64) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `subjects` (`subject1`,`subject1`, `subject3`)
) ENGINE=InnoDB
答案 2 :(得分:0)
现在添加约束:
ALTER TABLE {tablename}
ADD CONSTRAINT {constraintname} UNIQUE (subject1, subject2, subject3)