我写了一个触发器,判断界面输入数据是否合法,代码是这样写的;
----------------------
CREATE TRIGGER [usually_over] ON [dbo].[K_Over]
FOR INSERT, UPDATE
AS
/*输入数据的合法性在Client端检查*/
/*检查是否和已有数据冲突
判断条件:请假开始时间和结束时间与原来数据有交集*/
if exists(select i.a0188 from inserted i
where i.over_time>2 and i.over_type='3')
begin
raiserror('输入的加班时间超过2小时!',16,1)
rollback transaction
return
end
return
--------------------
这样做后功能确实达到了,但是只要弹出框后就写不进数据了,但是在特殊情况下,我想就算超过了数据限制也要可以写入。请问有什么办法吗
----------------------
CREATE TRIGGER [usually_over] ON [dbo].[K_Over]
FOR INSERT, UPDATE
AS
/*输入数据的合法性在Client端检查*/
/*检查是否和已有数据冲突
判断条件:请假开始时间和结束时间与原来数据有交集*/
if exists(select i.a0188 from inserted i
where i.over_time>2 and i.over_type='3')
begin
raiserror('输入的加班时间超过2小时!',16,1)
rollback transaction
return
end
return
--------------------
这样做后功能确实达到了,但是只要弹出框后就写不进数据了,但是在特殊情况下,我想就算超过了数据限制也要可以写入。请问有什么办法吗
2、程序直接判断,不要用触发器
3、给表加一个标志位,触发器根据标志位判断
ALTER TABLE trig_example DISABLE TRIGGER trig1 ;
alter table 表名 disable trigger 触发器名
---起用
alter table 表名 enable trigger 触发器名