锐狐 网站 后台,网站品牌栏目建设,wordpress中文转拼音,国外设计素材app一、介绍
触发器是与表有关的数据库对象#xff0c;指在insert/update/delete之前或之后#xff0c;触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性#xff0c;日志记录#xff0c;数据校验等操作。 使用别名OLD和NEW来引…一、介绍
触发器是与表有关的数据库对象指在insert/update/delete之前或之后触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性日志记录数据校验等操作。 使用别名OLD和NEW来引用触发器中发生变化的记录内容这与其他的数据库是相似的。现在触发器还只支持行级触发比如说 一条语句影响了 5 行 则会被触发 5 次不支持语句级触发比如说 一条语句影响了 5 行 则会被触发 1 次。
触发器类型NEW 和 OLDINSERTNEW 表示将要或者已经新增的数据UPDATEOLD表示修改之前的数据NEW表示将要或已经修改后的数据DELETEOLD表示将要或者已经删除的数据 二、触发器-语法
创建 CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETEON
tbl_name FOR EACH ROW --行级触发器BEGIN
BEGIN trigger_stmt ;
END; 查看 SHOW TRIGGERS ;
删除 DROP TRIGGER [schema_name]trigger_name; --如果没有指定schema_name默认为当前数据库。 三、触发器-案例1(insert类型) --插入数据触发器如下 create trigger tb_user_insert_trigger after insert on tb_user for each row begin insert into user_logs(id operationoperate_timeoperate_id,operate_params)VALUES(null insert , now()new.id, concat( 插入的数据内容为: id , new.id , , name ,new.name) ); end --查看触发器 SHOW TRIGGERS ; --删除触发器 DROP TRIGGER tb_user_insert_trigger 四、触发器-案例2(update类型) --更新数据触发器如下 create trigger tb_user_update_trigger after update on tb_user for each row begin insert into user_logs(id operationoperate_timeoperate_id,operate_params)VALUES(null update , now()new.id, concat(更新前的数据: id , old.id , , name old.name更新后的数据: id , new.id , , name new.name) ); end --查看触发器 SHOW TRIGGERS ; --删除触发器 DROP TRIGGER tb_user_update_trigger 五、触发器-案例3(delete类型) --删除数据触发器如下 create trigger tb_user_delete_trigger after deleteon tb_user for each row begin insert into user_logs(id operationoperate_timeoperate_id,operate_params)VALUES(null delete, now()old.id, concat(删除前的数据: id , old.id , , name old.name) ); end --查看触发器 SHOW TRIGGERS ; --删除触发器 DROP TRIGGER tb_user_delete_trigger 六、触发器总结
MySQL触发器是在特定表上执行的存储过程通常在插入、更新和删除数据时触发。触发器允许您在数据库操作前后执行自定义逻辑例如验证数据的有效性、记录日志或更新其他相关表的数据。
创建MySQL触发器
CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name
FOR EACH ROW
BEGIN-- 触发器逻辑
END;
触发器名称您为触发器指定的唯一名称。 BEFORE / AFTER指定触发器在操作之前或之后触发。 INSERT / UPDATE / DELETE指定触发器在执行插入、更新或删除操作时触发。 table_name触发器所属的表名。 FOR EACH ROW表示触发器将为每个受影响的行执行一次。
在BEGIN和END之间编写触发器的逻辑。可以使用NEW关键字引用插入或更新的新值使用OLD关键字引用更新或删除的旧值。
例如以下示例是一个简单的触发器案例
在每次插入新行到orders表时自动更新last_update列为当前时间
CREATE TRIGGER update_last_update
AFTER INSERT ON orders
FOR EACH ROW
BEGINUPDATE ordersSET last_update NOW()WHERE id NEW.id;
END;
这只是一个简单的示例实际上可以编写更复杂的触发器逻辑来满足您的需求。