一开始我使用的after,然后对自身的值进行更改。 在Oracle中用:old和:new表示执行前的行,和执行后的行。在MySQL中用old和new表示执行前和执行后的数据。 问题的起源 之前对数据库的触发器是这样写的, 1 CREATE TRIGGER triggerName after insert ON consumeinfo 2 FOR EACH ROW 3 BEGIN 4 UPDATE consumeinfo S...
trigger_stmt:触发器程序体,可以是一句SQL语句,或者用 BEGIN 和 END 包含的多条语句。 由此可见,可以建立6种触发器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER 、DELETE。 另外有一个限制是不能同时在一个表上建立2个相同类型的触发器,因此在一个表上最多建立6个触发器。
(NEW.ID,NEW.datet); #NEW 代表当前删除行 END; $$ DELIMITER ; 四、触发器的启用与禁用 ALTER TABLE [表名] DISABLE TRIGGER [触发器名] --禁用触发器 --需要执行的操作语句 ALTER TABLE [表名] ENABLE TRIGGER [触发器名] --启用触发器
1.插入操作 insert 对于insert语句,如果原表中没有数据,那么对于插入数据后表来说新插入的那条数据就是new。比如下面是SQL droptriggerifexistsinsert_tableB; -- 如果有这个触发器就先删除 createtriggerinsert_tableB -- 触发表名称 insert_tableB afterinsert -- 触发条件,在insert操作之后 ontableA -- 需要...
要修改MySQL触发器,可以使用以下步骤:1. 首先,使用SHOW TRIGGERS命令查看当前数据库中存在的触发器列表。2. 然后,使用DROP TRIGGER命令删除需要修改的触发器。例如...
NEW、OLD关键字 在触发器中,NEW 表示新数据,OLD 表示老数据,各类型的事件如下: insert 插入事件:NEW 表示当前插入的这条行数据。 update 修改事件:NEW 表示修改后的新数据,OLD 表示修改前的老数据。 delete 删除事件:OLD 表示删除前的老数据。 使用示例: ...
修改了stu_id,new.stu_id的值就是stu_id修改后的值;old.stu_id的值是原有的值(NULL也不例外) 通过这3、4两条数据推论出: 修改了stu_name,new.stu_id的值就是old.stu_id的值;old.stu_id的值是原有的值(NULL也不例外) 小结 new的值在没有修改的时候是和old的值一样的(含NULL),但当修改了之后,...
mysql触发器new old: "NEW . column_name"或者"OLD . column_name".这样在技术上处理(NEW | OLD . column_name)新和旧 的列名属于创建了过渡变量("transition variables")。 对于INSERT语句,只有NEW是合法的;对于DELETE语句,只有OLD才合法;而UPDATE语句可以在和NEW以及 ...
values(new.a_ID,new.a_ACCOUNT_ID,new.a_AMOUNT,new.a_REASON,new.a_CREATETIME,new.a_STATUS); END|| delimiter ; 需要注意: 必须声明: delimiter || 更新: -- 创建修改触发器 DELIMITER || -- 声明结束符 DROP TRIGGER IF EXISTS a_afterupdate_on_ahistory|| ...