--觸發器
create trigger islateradvance
on dbo.staffrecord
after insert
asbegin
declare @timemorning time(0)='08:00:00';
declare @timeafternoon time(0)='18:00:00';
declare @afternoon time(0);
declare @morning time(0);
set @morning= (select rstartwork from inserted);
set @afternoon= (select rendwork from inserted);
if @morning>@timemorning
update dbo.staffrecord set rislater=1;
if @afternoon<@timeafternoon
update dbo.staffrecord set risinadvance=1;
endgocreate trigger departcount --注意修改snum的初始值為0部門人數觸發器
on dbo.staffinfo
after insert
as begin
declare @depart varchar(20);
declare @num int;--使用者讀取部門人數
set @depart = (select ssdept from inserted);
set @num =(select snum from dbo.department where sdept=@depart);
set @num= (select(@num+1));
update dbo.department set snum=@num;
endgo
create trigger departcountdelte --注意修改snum的初始值為0部門人數觸發器
on dbo.staffinfo
after delete
as begin
declare @depart varchar(20);
declare @num int;--使用者讀取部門人數
set @depart = (select ssdept from deleted);--如果這裡變成了insert,那麼@num會一直為null
set @num =(select snum from dbo.department where sdept=@depart);
set @num= (select(@num-1));
update dbo.department set snum=@num;
endgo
資料庫系列之T SQL(觸發器)
觸發器是一種特殊的儲存過程,只能由事件驅動呼叫,而無法直接呼叫。當對資料庫的相關物件 資料庫 表 檢視 進行某些特定的操作時,資料庫會自動呼叫相應的觸發器。無需再執行增刪改或儲存過程的操作,讓程式更自動化。3.1 觸發器的觸發方式 sql server 按觸發器被啟用的時機可分為後觸發和替代觸發兩種...
T SQL語句建立觸發器
create trigger 觸發器名 on 表或檢視 for after instead of 操作時機 insert,update,delete assql語句 例1 要求 在order test表建立insert觸發器,當向order test表插入一行,如果cust test表中對應 記錄s...
資料庫觸發器
觸發器是一種特殊型別的儲存過程,它不同於我們前面介紹過的儲存過程。觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而 被直接呼叫。當對某一表進行諸如update insert delete 這些操作時,sql server 就會自動執行觸發器所定義的sql 語句,從而確保對資料...