觸發器實現多表之間的增加 刪除及更新

2022-01-15 20:21:11 字數 2367 閱讀 1999

注:本文參考

常見的觸發器有三種:分別應用於insert,update,delete事件。

如有兩張表:a表和b表,建立觸發器使當a表插入資料後b表也同步插入資料。其中b表插入資料的字段需要同a表中的字段相對應。

1

create

trigger

觸發器名稱2on

a表3 after insert4as

5begin

insert

into

b表(b表字段1,b表字段2,b表字段3)

6select

a表字段1,a表字段2,a表字段3

7from

inserted

8end

例項測試:

實現若info_stu有新的資料插入,則將資料的name提取出,同步到info_borrow表

1

create

trigger

tricopy_stu2borrow2on

info_stu

3 after insert4as

5begin

insert

into

info_borrow(name)

6select name from

info_stu

7end

測試效果如下:

如有兩張表:a表和b表,建立觸發器使當a表刪除資料後b表也能同步刪除資料。其中b表與a表應有相應主鍵關聯。

1

create

trigger

觸發器名稱2on

a表3 after delete4as

begin

deleteb表5

where b表主鍵 in(select a表主鍵 from

deleted)

6end

例項測試:

刪除info_stu中的一條記錄時,刪除info_borrow中相同的記錄

1

create

trigger

tridelete_stu2borrow2on

info_stu

3 after delete4as

begin

delete

info_borrow

5where name in (select name from

deleted)

6end

測試效果如下:

如有兩張表:a表和b表,建立觸發器使當a表資料更新後b表也同步更新資料。

1

create

trigger

觸發器名稱2on

a表3 after update

4as begin

5updateb表6

set7 b.b表字段1=

i.欄位1

8from

9 b表 b, deleted d,inserted i

10where b.b表字段=d.欄位

測試效果如下:

注:資料更新的操作涉及到了臨時表的建立:

理解觸發器裡面的兩個臨時的表:deleted,inserted。注意deleted與inserted分別表示觸發事件的表「舊的一條記錄」和「新的一條記錄」。

乙個資料庫系統中有兩個虛擬表用於儲存在表中記錄改動的資訊,分別是:

虛擬表inserted

虛擬表deleted

在表記錄新增時

存放新增的記錄

不儲存記錄

修改時存放用來更新的新紀錄

存放更新前的記錄

刪除時不儲存記錄

存放被刪除的記錄

觸發器及觸發器的作用

觸發器是一種用來保障參照完整性的特殊的儲存過程,它維護不同表中資料間關係的有關規則。當對指定的表進行某種特定操作 如 insert,delete或update 時,觸發器產生作用。觸發器可以呼叫儲存過程。建立觸發器的語法 create trigger owner.觸發器名 on owner.表名 f...

orcale 觸發器實現級聯刪除

請在資料庫中新增兩個觸發器 1 刪除表staff userinfo中的使用者時,同時刪除staff userrole中使用者對應的角色 2 刪除表staff role中的角色時,同時刪除staff rolemodule中角色對應的模組。錯誤 1.create or replace trigger d...

實現刪除指定節點及所有子結點的處理觸發器

create table tb id int,pid int,name nvarchar 10 insert tb select1,null,山東省 union allselect2,1,煙台市 union allselect4,2,招遠市 union allselect3,1,青島市 union ...