instead of 觸發器的主要優點是可以使不能更新的檢視支援更新。基於多個基表的檢視必須使用
instead of 觸發器來支援引用多個表中資料的插入、更新和刪除操作。instead of 觸發器的另乙個優點是使您得以編寫這樣的邏輯**:在允許批處理的其他部分成功的同時拒絕批處理中的某些部分。
transact-sql 語句建立兩個基表、乙個檢視和檢視上的 instead of 觸發器。以下表將個人資料和業務資料分開並且是檢視的基表。
/*在檢視上定義 instead of insert 觸發器以在乙個或多個基表中插入資料。*/
--部門表
create table dept
d_id int primary key,
d_name varchar(20)
--員工表
create table emp
e_id int primary key,
e_name varchar(20),
d_id int references dept(d_id)
select * from emp
drop view v
create view v
as select e_id,e_name,d.d_id,d_name from emp e,dept d where e.d_id=d.d_id
select * from v
insert into v values(1001,'張珊',101,'銷售部')
/*******************使用instead of 觸發器******************/
drop trigger de_em_insert
gocreate trigger de_em_insert
on v
instead of insert
asbegin
if (not exists (select d.d_id from dept d, inserted i where d.d_id = i.d_id))
insert into dept select d_id,d_name from inserted
if (not exists (select e.d_id from emp e, inserted i where e.d_id = i.d_id))
insert into emp select e_id,e_name,d_id from inserted
else
update emp set e_id = i.e_id,e_name = i.e_name from emp e, inserted i where e.d_id = i.d_id
end可以在檢視或表中定義 instead of delete 觸發器,以代替 delete 語句的標準操作。通常,在檢視上定義 instead of delete 觸發器以便在乙個或多個基表中修改資料。
可在檢視上定義 instead of update 觸發器以代替 update 語句的標準操作。通常,在檢視上定義 instead of update 觸發器以便修改乙個或多個基表中的資料。
Trigger觸發器的instead of語句意義
instead of 指定執行觸發器而不是執行觸發語句,從而代替觸發語句的操作 例子 use test go create trigger t1 on a instead of delete asprint 資料刪除不成功 go 當在表a上有delete語句被執行時,觸發此觸發器,而原delete語...
AFTER觸發器與INSTEAD OF觸發器的區別
instead of 觸發器用來代替通常的觸發動作,即當對錶進行insert update 或 delete 操作時,系統不是直接對錶執行這些操作,而是把操作內容交給觸發器,讓觸發器檢查所進行的操作是否正確。如正確才進行相應的操作。因此,instead of 觸發器的動作要早於表的約束處理。inst...
AFTER觸發器與INSTEAD OF觸發器的區別
全文 instead of 觸發器用來代替通常的觸發動作,即當對錶進行insert update 或 delete 操作時,系統不是直接對錶執行這些操作,而是把操作內容交給觸發器,讓觸發器檢查所進行的操作是否正確。如正確才進行相應的操作。因此,instead of 觸發器的動作要早於表的約束處理。i...