📜  T-SQL 创建触发器 - SQL (1)

📅  最后修改于: 2023-12-03 15:20:26.914000             🧑  作者: Mango

T-SQL 创建触发器 - SQL

在 SQL Server 中,触发器是一种特殊类型的存储过程,它会在数据表中的数据发生变化时自动执行。触发器可以用于实现数据的自动化处理和数据完整性的维护。本文将介绍如何使用 T-SQL 创建触发器。

创建触发器

要创建一个触发器,需要使用 CREATE TRIGGER 语句,如下所示:

CREATE TRIGGER [trigger_name]
    ON [table_name]
    AFTER {[INSERT],[UPDATE],[DELETE]}
AS
BEGIN
    -- 触发器的代码
END

其中,trigger_name 是触发器名称,table_name 是要在其上创建触发器的数据表名称,[INSERT],[UPDATE],[DELETE] 是要监视的事件类型。

例如,下面的代码创建了一个在 employee 表上的触发器,该触发器在 INSERTUPDATE 事件发生时执行:

CREATE TRIGGER [tr_employee]
    ON [employee]
    AFTER INSERT, UPDATE
AS
BEGIN
    -- 触发器的代码
END
触发器的事件和操作

在创建一个触发器时,需要指定要监视的事件类型,以及发生这些事件时要执行的操作。以下是可用的事件类型和操作:

  • INSERT:在数据表中添加新记录时触发触发器。
  • UPDATE:在数据表中更新记录时触发触发器。
  • DELETE:在从数据表中删除记录时触发触发器。

触发器的代码可以包括一系列的 SQL 语句,包括 INSERTUPDATEDELETE 语句。可以使用 INSERTEDDELETED 这两个特殊表来操作触发器的事件。

  • INSERTED:在 INSERTUPDATE 操作中,INSERTED 表包含新插入或更新的记录。
  • DELETED:在 UPDATEDELETE 操作中,DELETED 表包含已删除或更新的记录。

例如,下面的代码创建了一个在 employee 表上的触发器,该触发器在 INSERTUPDATE 事件发生时自动更新 last_modified 列:

CREATE TRIGGER [tr_employee]
    ON [employee]
    AFTER INSERT, UPDATE
AS
BEGIN
    UPDATE [employee]
    SET [last_modified] = GETDATE() 
    WHERE [employee_id] IN (SELECT [employee_id] FROM INSERTED);
END
总结

使用 T-SQL 创建触发器可以方便地实现自动化处理和数据完整性的维护。本文介绍了如何创建触发器、指定监视的事件类型和执行的操作,以及如何操作特殊表 INSERTEDDELETED。通过掌握这些内容,程序员可以更好地利用触发器优化数据库管理。