0

我有 5 列 a、b、c、d 和 e。我想将值插入前 4 列,并在最后一列中将默认值保留为 1。我将前 4 列保留为主键。如果在前 4 列中插入了重复值,那么我想再次插入相同的值,但在第 5 列中增加。例如:如果 1,2,3,4 是前 4 列的值。然后当 1,2,3,4 再次出现时,它们需要插入为 1,2,3,4 但第五列为 2。

4

2 回答 2

1

如果前四列是主键,那么你不能再 1,2,3,4

IE

服用 Col 1, Col 2, Col 3, Col 4

1,2,3,4 - 好的 2,1,3,4 - 好的 2,3,1,4 - 好的 1,4,3,2 - 好的 .. 像 4 C 4 组合

1,2,3,4 - 好的 1,2,3,4 - 再一次,这将是一个错误!

所以你不能再插入1,2,3,4!

于 2012-11-26T06:41:43.857 回答
0

首先删除主键并添加唯一键。

ALTER TABLE test DROP PRIMARY KEY, ADD UNIQUE KEY 'test_uIdx_a_b_c_d_e' ( a,b,c,d,e );

假设你的桌子现在看起来像这样

CREATE TABLE test (
    a int NOT NULL DEFAULT '0',
    b int NOT NULL DEFAULT '0',
    c int NOT NULL DEFAULT '0',
    d int NOT NULL DEFAULT '0',
    e int NOT NULL DEFAULT '0',
    UNIQUE KEY 'test_uIdx_a_b_c_d_e' ( a,b,c,d,e )
)

然后你可以在插入之前创建一个触发器

DELIMITER ;;
CREATE TRIGGER before_test_insert 
BEFORE INSERT ON test
FOR EACH ROW
BEGIN
    SET NEW.e := ( SELECT COUNT(*)+1 FROM test WHERE a = NEW.a AND b = NEW.b AND c = NEW.c AND d = NEW.d;
END;;

DELIMITER ;

这会将字段 e 设置为 a、b、c、d 的出现次数

上面的评论之一提供了一个更简单的选择

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

于 2012-11-26T07:16:40.163 回答