1usehrmis
2set ansi_nulls on
3set quoted_identifier on4go
5alter
trigger
[dbo
].[tg_k20_month]on
[dbo
].[k20]6
forinsert,update7as
8if(update(k2006)) or (update
(k2007))
9begin
10declare
@msg
nvarchar(80), @begtime
datetime, @endtime
datetime;11
declare
@year
int, @month
int;
12--
獲取請假的年份及月份
13select
@year
=year
(k2006),
14@month
=case
15when
day(k2006) >
25then
month(k2006)+116
else
month
(k2006)
17end
18from
inserted;
19--
計算請假單據的開始時間所在的月份
20select
@endtime
=case
21when
@month
<
10then
convert(varchar(4),@year)+'0
'+convert(varchar(1),@month)+'25
'22else
convert(datetime, convert(varchar(4),@year)+
convert(varchar(1),@month)+'25
')23end
24--
,@begtime = case
25--
when @month < 11 then convert(varchar(4),@year)+'0'+convert(varchar(1),@month-1)+'26'
26--
else convert(varchar(4),@year)+convert(varchar(1),@month-1)+'26'
27--
end28
ifexists(select a0188 from inserted where k2007 >
@endtime)29
begin
30select
@msg
=convert(varchar(5),k2006,110)+'到
'+convert(varchar(5),k2007,110)+31'
此段時間內有跨月現象,請按月份重新錄入!
'from
inserted
32raiserror(@msg,16,1)33
rollback
transaction
34return
35end
36end
37return
有乙個問題,是後來發現的,上面sql語句中有一段:
1ifexists(select a0188 from inserted where k2007 >
@endtime)2
begin
3select
@msg
=convert(varchar(5),k2006,110)+'到
'+convert(varchar(5),k2007,110)+4'
此段時間內有跨月現象,請按月份重新錄入!
'from
inserted
5raiserror(@msg,16,1)6
rollback
transaction
7return
8end
其中raiserror(@msg,16,1)
是丟擲乙個錯誤級別為16的異常資訊,這個資訊能否被c#裡的catch語句捕足?具體怎麼捕捉?由於今天是在轉我qq空間的資料,所以暫時寫一點,日後我看到的話,回來再補回。
乙個觸發器
設計乙個觸發器,當刪除employees中的某個雇員時,刪除orders表中的與這個雇員 相關的一切記錄。第一步 建立儲存過程 drop trigger employees delete gocreate trigger employees delete on employees instead o...
乙個觸發器的例子
create or replace trigger usremhr trg sq rule insert before insert on sq rule base for each row declare temp rule id varchar2 10 temp rul theme id var...
乙個簡單的觸發器
觸發器是與表有關的資料庫物件,在滿足定義條件時觸發,並執行觸發器中定義的語句集合。觸發器的特性 1 有begin end體,begin end 之間的語句可以寫的簡單或者複雜 2 什麼條件會觸發 i d u 3 什麼時候觸發 在增刪改前或者後 4 觸發頻率 針對每一行執行 5 觸發器定義在表上,附著...