我有 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。
问问题
527 次
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 回答