MYSQL插入...重复值插入再次增加

时间:2012-11-26 06:36:58

标签: c# mysql sql

我有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。

2 个答案:

答案 0 :(得分:1)

如果前四列是主键,则不能再次使用1,2,3,4

服用 第1栏,第2栏,第3栏,第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!

答案 1 :(得分: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