mysql – 使用自动增量字段插入触发器之前/之后

我遇到了一个插入触发器的问题,它应该修复表中的列:

id        - auto increment int
thread_id - int [NULL]

我想要实现的是将thread_id设置为id,如果它插入为NULL.我失败了因为:

>在插入触发器之前使用仍然没有id的新值,并且神秘地将thread_id设置为0
>使用插入后 – 更新触发器抛出合理的异常无法更新表,因为它已被语句使用.
>您无法添加其他自动增量字段

这个问题的解决方案是什么?

解决方法:

DELIMITER $$

CREATE TRIGGER mytrigger BEFORE INSERT ON yourtable 
FOR EACH ROW BEGIN

SET NEW.thread_id = IF(ISNULL(NEW.thread_id), 0, NEW.thread_id);

END;

$$

编辑:为了修改当前记录的值,你不使用UPDATE语句,你可以使用NEW.columname访问它们

上一篇:在ubuntu ARMHF上使用mySQL触发器调用外部脚本WHITOUT sys_exec


下一篇:mysql – 在触发器中UPDATE后更新相同的行