我想在一个表插入一条记录 ,插入这条记录后,把其他的记录某个字段全部增加1.
首先试了批量更新,如果想要更新就要取到所有原来的值,比较麻烦。
后来想到用触发器,可是现在的问题是:
关于insert的触发,不能使用old这个关键词。
如果是触发器里面用update 还会陷入死循环
DELIMITER $$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
TRIGGER `WoShow`.`AddNewActivity` BEFORE INSERT
ON `WoShow`.`activityinfo`
FOR EACH ROW BEGIN
UPDATE activityinfo SET sortvalue = sortvalue + 1;
END$$
DELIMITER ;
错误码: 1442
Can't update table 'activityinfo' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
真郁闷?
如删除触发器 ALARMRECORD_TG :
CREATE OR REPLACE TRIGGER ALARMRECORD_TG AFTER
顾名思义,new是新插入的数据,old是原来的数据 insert只会有new,代表着要插入的新记录 delete只会有old,代表着要删除的记录 update由于执行的是先删除旧的记录,再插入新的记录,因此new和old都会有,且含义与上面的相同