簡述觸發器

2021-05-21 20:06:32 字數 1243 閱讀 2900

觸發器裡有兩個臨時表,乙個是deleted 表,乙個是 inserted表 。

很好的理解觸發器的兩個臨時表(deleted , inserted)在觸發事務過程中的作用,是熟練使用觸發器的前提!

下面具體的介紹deleted表和inserted表:

虛擬表inserted                    虛擬表deleted

在表記錄 新增時      存放新增的記錄                     不儲存記錄

修改時      存放用來更新的新記錄            存放更新前的記錄

刪除時      不儲存記錄                           存放被刪除的記錄

建立觸發器:

create trigger 觸發器名

on 表名

for delete|update|insert

as/*t-sql*/

例項:--建立測試表

create table a01

(code varchar(10),

number decimal(18,4))go

create table a02

(code varchar(10),

number decimal(18,4)

)--插入測試資料

insert into a01

select '1001',14

union

select '1002',21

union

select '1003',15

goinsert into a02

select '1001',15

union

select '1002',18

union

select '1003',20

go--建立觸發器

alter trigger num

on a01

for update

asif update(number)

begin

update a02 set a02.number=a02.number-(i.number-d.number)

from inserted i,deleted d

where a02.code=i.code and i.code=d.code

end/*乙個update 的過程可以看作為:生成新的記錄到inserted表,複製舊的記錄到deleted表,然後刪除 student記錄並寫入新紀錄。*/

觸發器 mysql觸發器

觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...

觸發器(五 復合觸發器)

oracle11g開始提供了一種復合觸發器,簡單的說就是支援把語句級和行級觸發器組合在一起。實際應用場景不多,這裡就做個記錄。與單個觸發器語法有所區別 1.單個觸發器的頭部是 before after 動作 on 物件 for 觸發級別 而組合觸發器的頭部是 for 動作 on 物件 compoun...

mysql觸發器when MySQL觸發器

set quoted identifier on goset ansi nulls on goalter trigger trg risks on dbo.projectrisk for insert,update asbegin update projectrisk set classificat...