SQL Server触发器

一、大致介绍

1、结构

(1)动作时间:BEFORE、AFTER、INSTEAD OF

(2)触发事件:UPDATE、DELETE、INSERT

(3)目标表(ON)

(4)触发动作

  ①动作间隔尺寸:FOR EACH ROW | STATEMENT

  ②动作事件条件:WHERE

  ③动作体:SQL语句

2、例子

①BEFORE行级触发器

CREATE TRIGGER INSERT_OR_UPDATE_SALARY
BEFORE INSERT OR UPDATE ON Teacher
FOR EACH ROW /*行级触发器*/
AS 
BEGIN   IF (new.Salary < 4000)   THEN new.Salary =4000   END IF END

②AFTER行级触发器

CREATE TRIGGER INSERT_SALARY
AFTER INSERT ON Teacher
FOR EACH ROW
AS 
BEGIN   INSERT INTO Salary_log VALUES(new.Eno, new.Salary, CURRENT_USER, CURRENT_TIMESTAMP)
END

③ RAISERROR

CREATE TRIGGER TRIG_OD_UPDATE ON [Order Details]
FOR UPDATE
AS 
IF UPDATE (OrderID)
BEGIN
    RAISERROR ('OrderID number cannot be modified.', 10, 1)
    ROLLBACK TRANSACTION
END

msg_str:用户定义消息

severity:严重级别      [0,10],不会跳到catch;[11,19],跳到catch;[20,无穷),则直接终止数据库连接;

state: 介于 1 至 127 之间的任意整数。(state 默认值为1)

二、基本语法

1、创建

CREATE TRIGGER <触发器名> 
ON <表名> FOR INSERT/DELETE/UPDATE AS UPDATE <表名> SET FROM WHERE

2、删除

DROP TRIGGER <触发器名>

 

参考来源:

https://www.cnblogs.com/xugang/archive/2011/04/09/2010216.html

https://www.51cto.com/specbook/48/43867.htm

posted @ 2020-06-09 17:45  KAKALALALLA  阅读(63)  评论(0)    收藏  举报