乙個跨月請假單據判斷觸發器

2022-03-28 16:37:31 字數 2207 閱讀 7745

1

usehrmis

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語句中有一段:

1

ifexists(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 觸發器定義在表上,附著...