我有一个带有双组件键的表,其中第一个组件是来自相关表的给定id,第二个组件是序号,以使主键唯一。表格的一个简单示例:
CREATE TABLE a_tbl (
id INT,
seq_num INT,
primary key (id, seq_num)
);
现在,MySQL中的InnoDB引擎只允许在多元素主键的第一个元素上自动递增。因此,我认为我可以通过BEFORE INSERT触发器轻松处理第二个元素的赋值,但事实证明它不起作用。
我已尝试过多种方式,但无法让MySQL接受语法,并且没有解释SQL代码有什么问题。希望有人可以解决问题所在以及如何使代码工作。这是SQL触发器代码:
CREATE TRIGGER a_tbl_BEFORE_INSERT
BEFORE INSERT ON a_tbl
FOR EACH ROW BEGIN
SET NEW.seq_num = 1 + (SELECT MAX(COALESCE(seq_num, 0))
FROM a_tbl
WHERE id = NEW.id
);
END
答案 0 :(得分:0)
使用delimiter:
delimiter |
CREATE TRIGGER a_tbl_BEFORE_INSERT
BEFORE INSERT ON a_tbl
FOR EACH ROW BEGIN
SET NEW.seq_num = 1 + coalesce((SELECT MAX(seq_num) FROM a_tbl WHERE id = NEW.id), 0);
END
|
delimiter