SQL 面试题 目录

SQL 中如何创建触发器?

推荐答案

本题详细解读

1. 触发器的基本概念

触发器(Trigger)是数据库中的一种特殊存储过程,它在特定的事件(如INSERT、UPDATE、DELETE)发生时自动执行。触发器通常用于在数据变更时执行一些额外的操作,比如数据验证、日志记录等。

2. 创建触发器的语法

创建触发器的基本语法如下:

  • 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岁,触发器将抛出一个错误,阻止插入操作。

纠错
反馈