【发布时间】:2012-03-16 11:54:49
【问题描述】:
我正在研究触发器,我有一个问题。
我正在创建一个触发器来更改时间复合体。
数据表中weeklymeeting
|section_id| meeting type| days| timestart|timeend|class_id|
| 13 | Lecture | 5 | 01:00:00 |02:00:00|12 |
timestart 和 timeend 的数据类型为 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
但是,它并没有真正起作用...我不太确定这个原因....
有人知道这个触发器的问题吗?
谢谢
【问题讨论】:
标签: sql sql-server sql-server-2008 triggers