create trigger 觸發器名
on 表或檢視
for|after|instead of --操作時機
insert,update,delete
assql語句
例1:要求:在order_test表建立insert觸發器,當向order_test表插入一行,如果cust_test表中對應
記錄status值為1,說明處於準備狀態不能寫入該資料
create trigger cust_orders_ins2
on order_test
after insert
asif (select cstatus from cust_test,inserted where
cust_test.customerid=inserted.customerid)=1
begin
print 'the goods is being processed'
rollback transaction
endgo
例2:在order_test表上建立乙個插入觸發器,在新增乙個訂單時,減少cust_test表的相應貨物的記錄的庫存量。
create trigger cust_orders_ins3
on order_test
after insert
as update cust_test set cstorage=cstorage-inserted.orders
from cust_test,inserted
where cust_test.customerid=inserted.customerid
例3:在order_test表上建立乙個插入觸發器,規定訂單日期(odate)不能手工修改。
create trigger orderdateupdate
on order_test
after update
asif update (odate)
begin
raiserror('error',10,1)
rollback transaction
end例4:
要求訂購的物品一定要在倉庫中有的,並且數量足夠。
create trigger order_insert5
on order_test
after insert
asbegin
if(select count(*)
from cust_test,inserted
where cust_test.customerid=inserted.customerid)=0
begin
print 'no entry in goods for your order'
rollback transaction
endif(select cust_test.cstorage from cust_test,inserted
where cust_test.customerid=inserted.customerid)<
(select inserted.orders from cust_test,inserted
where cust_test.customerid=inserted.customerid)
begin
print 'no enough entry in goods for your order'
rollback transaction
end例6:
在order_test表上建立乙個插入觸發器,同時插入多行資料時,要求訂購的物品一定要在倉庫中有的
create trigger order_insert6
on order_test
after insert
asif
(select count(*) from cust_test,inserted
where cust_test.customerid=inserted.customerid)<>@@rowcount
--可以在觸發器邏輯中使用 @@rowcount 函式以區分單行插入和多行插入。
begin
delete order_test from order_test,inserted
where order_test.orderid=inserted.orderid and
inserted.customerid not in (select customerid from cust_test)
endprint @@rowcount
T SQL 語句(六) 觸發器操作
一 觸發器簡介 1 觸發器的功能 a 實現比約束更為複雜的資料約束 b 可以檢查 sql 所做的操作是否被允許 c 修改其他資料庫裡表的資料 d 可以一次呼叫多個儲存過程 e 傳送sql mail f 返回自定義錯誤資訊 g 修改原來要操作的 sql 語句 h 防止資料表結構更改或表被刪除 2 觸發...
T SQL語句建立儲存過程和觸發器練習
源網頁 實驗過程 一 在student資料庫上練習建立並呼叫課堂講授的儲存過程和觸發器。1.建立乙個instead of觸發器,要求實現一下功能 在t student表上建立乙個刪除型別的觸發器notallowdelete,當上除記錄時,顯示不允許刪除的提示資訊 use students go if...
理解T SQL 觸發器
觸發器是一種響應特定事件的特殊型別的儲存過程。有兩種型別的觸發器 資料定義語言 ddl 和資料操作語言 dml 觸發器。ddl能夠響應某種方式 create,alter,drop 修改資料庫結構時激發 dml是附加在特定表和檢視上的 程式不能顯式呼叫觸發器,觸發器 是某種事件產生後被自動執行。ddl...