【发布时间】:2016-10-03 10:23:59
【问题描述】:
我有一个 mysql Innodb 表 'classrooms_subjects'
id|classroom_id|subject_id
classroom_id 和 subject_id 是复合键。每当我插入带有教室 ID 和主题 ID 的行时,我的 id 字段都会插入为 0。
现在我想创建一个触发器,它将输入 id 字段作为 last_inserted_id()+1。
我还需要处理一次插入的多条记录。我的触发器如下:
CREATE TRIGGER `increment_id` AFTER INSERT ON `classrooms_subjects`
FOR EACH ROW BEGIN
UPDATE classrooms_subjects
SET classrooms_subjects.id = LAST_INSERT_ID() + 1 WHERE id=0;
END
当我插入一条记录时,我收到以下错误: "无法更新触发器中的表,因为它已被调用此触发器的语句使用
【问题讨论】:
-
使用
auto_increment列。 -
2 列由复合键组成,因此 mysql 不允许创建另一列作为自动增量
-
您可以将自增列定义为主键,并将该对定义为唯一的非空键。