推荐答案
CREATE TRIGGER trigger_name BEFORE | AFTER | INSTEAD OF INSERT | UPDATE | DELETE ON table_name FOR EACH ROW BEGIN -- 触发器逻辑 END;
本题详细解读
1. 触发器的基本概念
触发器(Trigger)是数据库中的一种特殊存储过程,它在特定的事件(如INSERT、UPDATE、DELETE)发生时自动执行。触发器通常用于在数据变更时执行一些额外的操作,比如数据验证、日志记录等。
2. 创建触发器的语法
创建触发器的基本语法如下:
CREATE TRIGGER trigger_name BEFORE | AFTER | INSTEAD OF INSERT | UPDATE | DELETE ON table_name FOR EACH ROW BEGIN -- 触发器逻辑 END;
- trigger_name: 触发器的名称,必须是唯一的。
- BEFORE | AFTER | INSTEAD OF: 指定触发器在事件之前(BEFORE)、之后(AFTER)或替代(INSTEAD OF)执行。
- INSERT | UPDATE | DELETE: 指定触发器响应的事件类型。
- table_name: 触发器所关联的表名。
- FOR EACH ROW: 指定触发器对每一行数据都执行。
- BEGIN ... END: 触发器的主体,包含触发器执行的SQL语句。
3. 触发器的执行时机
- BEFORE: 在事件发生之前执行触发器逻辑。
- AFTER: 在事件发生之后执行触发器逻辑。
- INSTEAD OF: 替代事件执行触发器逻辑,通常用于视图上的触发器。
4. 触发器的事件类型
- INSERT: 当向表中插入新数据时触发。
- UPDATE: 当更新表中的数据时触发。
- DELETE: 当从表中删除数据时触发。
5. 触发器的应用场景
- 数据验证: 在插入或更新数据之前,检查数据的有效性。
- 日志记录: 在数据变更时,记录变更的详细信息。
- 数据同步: 在一个表的数据变更时,自动更新另一个表的相关数据。
6. 示例
以下是一个简单的触发器示例,它在向employees
表插入新记录之前,检查员工的年龄是否大于18岁:
-- -------------------- ---- ------- ------ ------- ----------------------- ------ ------ -- --------- --- ---- --- ----- -- ------- - -- ---- ------ -------- ------- --- ------------ - --------- ---- -- -- ----- -- ----- ----- --- --- ----
在这个示例中,如果插入的员工的年龄小于18岁,触发器将抛出一个错误,阻止插入操作。