钟二网络头像

钟二网络

探索SQL查询技巧、Linux系统运维以及Web开发前沿技术,提供一站式的学习体验

  • 文章92531
  • 阅读1164380
首页 SQL 正文内容

sql的触发器语法

钟逸 SQL 2024-08-07 19:43:23 33

触发器是数据库中的一种特殊对象,用于在表发生特定事件(如插入、更新和删除)时自动执行一组SQL 语句。SQL 触发器语法的基本结构如下:

CREATE TRIGGER [trigger_name]

ON [table_name]

FOR [event_type]

AS

[sql_statements]

[trigger_name]:指定触发器的名称

[table_name]:触发器关联的表名称

[event_type]:触发器将响应的事件类型,如 INSERT、UPDATE 或 DELETE

[sql_statements]:当触发器被激活时要执行的SQL 语句。

INSERT 触发器

INSERT 触发器在向表中插入新行时触发。可以使用 INSERT 触发器来执行以下操作:

维护表之间的引用完整性

计算衍生列或属性

执行审计或日志记录

-- 当向 Customers 表中插入新行时触发

CREATE TRIGGER Insert_Customers

ON Customers

FOR INSERT

AS

-- 更新 Orders 表中的 CustomerCount 字段

UPDATE Orders

SET CustomerCount = CustomerCount + 1

WHERE CustomerID = NEW.CustomerID;

UPDATE 触发器

UPDATE 触发器在现有行在表中更新时触发。可以使用 UPDATE 触发器来执行以下操作:

更新相关表中的相关行

执行业务规则验证

记录更改历史信息

-- 当 Products 表中的 ProductPrice 列更新时触发

CREATE TRIGGER Update_ProductPrice

ON Products

FOR UPDATE OF ProductPrice

AS

IF (NEW.ProductPrice < 0)

BEGIN

RAISE EXCEPTION -- 引发异常以防止负价格

END;

DELETE 触发器

DELETE 触发器在表中的现有行被删除时触发。可以使用 DELETE 触发器来执行以下操作:

级联删除与已删除行关联的行

执行数据清理任务

记录已删除数据的历史信息

-- 当 Orders 表中的行被删除时触发

CREATE TRIGGER Delete_Orders

ON Orders

FOR DELETE

AS

-- 级联删除 OrderItems 表中的相关行

DELETE FROM OrderItems

WHERE OrderID IN (SELECT OrderID FROM DELETED);

文章目录
    搜索