MySQL触发器

MySQL触发器

触发器是一种特殊的存储过程,触发器和存储过程一样是一个能完成特定功能、存储在数据库服务器上的SQL片段,但是触发器无需调用,当对数据库表中的数据执行DML操作时自动触发这个SQL片段的执行,无需手动调用.
在MySQL中,只要执行insert,update,delete操作是才能触发触发器的执行
触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作.
使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据库是相似的,现在触发器还值支持行级触发,不支持语句级触发.
触发器的特性
① 什么条件会触发: insert,delete,update
② 什么时候触发: 在增删改前或者后
③ 触发频率: 针对每一行执行
④ 触发器定义在表上,附着在表上
创建触发器
-- 创建只有一个执行语句的触发器
格式:
	create trigger 触发器名 before|after 触发事件
	on 表名 for each row
	执行语句;

-- 创建有多个执行语句的触发器
格式:
	create trigger 触发器名 before|after 触发事件
	on 表名 for each row
	begin
		执行语句列表
	end;
demo
-- 需求:当user表添加一行数据,则会自动在user_log添加日志记录
delimiter $$
create trigger trigger_test after insert
on user for each row
begin
	insert 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL 中,触发器是与特定表相关联的一种特殊类型的存储过程,它在特定事件(例如插入、更新或删除)发生时自动执行。 下面是一个 MySQL 触发器示例,它会在向表中插入新记录时自动执行,并将插入的数据记录到另一个表中。 首先,创建一个名为 "orders" 的表: CREATE TABLE orders ( order_id INT PRIMARY KEY AUTO_INCREMENT, customer_id INT NOT NULL, amount DECIMAL(10,2) NOT NULL, order_date DATE NOT NULL ); 接下来,创建一个名为 "orders_log" 的表,用于记录插入的数据: CREATE TABLE orders_log ( log_id INT PRIMARY KEY AUTO_INCREMENT, order_id INT NOT NULL, customer_id INT NOT NULL, amount DECIMAL(10,2) NOT NULL, order_date DATE NOT NULL, log_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); 然后,创建一个名为 "orders_insert_trigger" 的触发器,它将在向 "orders" 表中插入新记录时自动执行: DELIMITER // CREATE TRIGGER orders_insert_trigger AFTER INSERT ON orders FOR EACH ROW BEGIN INSERT INTO orders_log (order_id, customer_id, amount, order_date) VALUES (NEW.order_id, NEW.customer_id, NEW.amount, NEW.order_date); END// DELIMITER ; 现在,每次向 "orders" 表中插入新记录时,都会自动执行 "orders_insert_trigger" 触发器,将插入的数据记录到 "orders_log" 表中。 例如,执行以下 SQL 语句: INSERT INTO orders (customer_id, amount, order_date) VALUES (1, 100.00, '2021-01-01'); 此时,将向 "orders" 表中插入一条新记录,并自动执行 "orders_insert_trigger" 触发器,将插入的数据记录到 "orders_log" 表中。执行以下 SQL 语句,可以查看 "orders_log" 表中的记录: SELECT * FROM orders_log; 结果应该类似于: +--------+----------+-------------+--------+------------+---------------------+ | log_id | order_id | customer_id | amount | order_date | log_date | +--------+----------+-------------+--------+------------+---------------------+ | 1 | 1 | 1 | 100.00 | 2021-01-01 | 2021-01-01 00:00:00 | +--------+----------+-------------+--------+------------+---------------------+

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web18334137065

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值