我遇到了一个插入触发器的问题,它应该修复表中的列:
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访问它们