簡體   English   中英

SQL Server 2008 FOR INSERT觸發器不起作用

[英]SQL Server 2008 FOR INSERT trigger not working

我正在研究扳機,但有一個問題。

我正在創建一個觸發器來更改時間復雜度。

weeklymeeting的數據表中

|section_id| meeting type| days| timestart|timeend|class_id|
| 13       | Lecture     |   5 | 01:00:00 |02:00:00|12     |

timestarttimeend的數據類型為TIME

我正在創建檢查時間復雜度的觸發器

例如

如果用戶使用類似的查詢

INSERT INTO DBO.WeeklyMeetings VALUES (35, 1,1 ,'11:40:00','11:42:00', 42)

它應該插入數據

然而

INSERT INTO CSE132B.DBO.WeeklyMeetings VALUES (35, 1, 1, '12:30:00','01:30:00', 42)

那么它必須返回錯誤消息,因為它很復雜

因此,我創建了一個觸發器來檢查時間復雜度。

ALTER TRIGGER [dbo].[check_section_time_complex] ON [dbo].[WeeklyMeetings]
FOR INSERT AS
IF EXISTS(select * from inserted as i INNER JOIN dbo.WeeklyMeetings as m  ON (i.timestart BETWEEN m.timestart and m.timeend)  
OR( i.timeend BETWEEN m.timestart and m.timeend ))
begin
 RAISERROR ('Can not update data because  section time is complexing with other section!!', 16,1);
rollback tran
end

但是,它並沒有真正起作用...我不確定那個原因。

有誰知道此觸發器中的問題嗎?

謝謝

如果“不是真的”表示您是在允許插入沖突的數據,然后引發錯誤,那是因為您指定了FOR INSERT觸發器,這意味着它是插入數據之后發生的。

如果要防止插入數據,則需要使用INSTEAD OF觸發器,該觸發器發生插入之前 ,如果有效,請自己執行插入操作。

有關觸發器的定義,請參見http://msdn.microsoft.com/zh-cn/library/ms189799.aspx

如果還有其他錯誤,請更全面地描述。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM