触发器sql

触发器里没有updated ,只有inserted 和deleted两个临时表

inserted,deleted是在触发器中使用的两个临时表,当执行insert操作时,在inserted中存储着当前插入的记录,在执行delete操作时,在del eted中存储着当前删除的记录, 当执行update时,在inserted中存储着修改后的记录,在deleted中存储着修改前的记录。
### SQL触发器概述 触发器是一种特殊类型的存储过程,在特定数据修改操作发生时自动执行。这些操作通常涉及`INSERT`, `UPDATE` 或者 `DELETE` 语句,作用于指定的表上[^1]。 ### 创建触发器的基本结构 创建触发器的标准语法如下: ```sql 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`: 明确每次处理单条记录而非批量处理整个结果集。 ### MySQL触发器限制 值得注意的是,在MySQL环境中构建触发器存在一些约束条件。例如,不允许使用诸如`SHOW`, `LOAD DATA`, `BACKUP DATABASE`等管理性质强的操作命令;同样也禁止调用可能导致事务状态改变的动作像`COMMIT`, `ROLLBACK`以及任何涉及到DDL(Data Definition Language)变更如`ALTER TABLE`的行为[^2]。 ### 实际应用案例分析 假设有一个名为`orders`的订单表,每当新订单被加入(`INSERT`)时希望同步更新另一个统计销售总额的汇总表`sales_summary`: ```sql DELIMITER $$ CREATE TRIGGER update_sales_summary_after_order_insert AFTER INSERT ON orders FOR EACH ROW BEGIN UPDATE sales_summary SET total_amount = total_amount + NEW.order_amount WHERE product_id = NEW.product_id; END$$ DELIMITER ; ``` 上述脚本展示了如何利用触发器机制实现跨表间自动化维护业务逻辑的功能[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值