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