我有一个触发器,需要检查书本日期是否不晚于支票日期。但是,当我执行的帐单日期是incheck日期之后的语句(以检查触发器是否有效)时,它什么都不做。当我第二次执行该语句时,触发器将起作用,这可能是因为随后有一行触发了触发器。但是我不明白的是,为什么当我第一次做“错误”语句时,触发器不起作用
这是触发器和应触发该触发器的语句。
create trigger t_check_date
on booking
after update, insert
as
if exists
(
select b.bookid
from booking b
join bookingroom bk
on b.bookid = bk.bookid
where b.bookdate >= bk.incheckdate
)
begin
raiserror('Error',16,1)
rollback transaction
end
这里是语句,首先是属性,然后是值。
insert into booking values (bookdate, count_person, hotelid, rating, customerid, employeeid )
insert into booking values ('2019-05-17', 1, 1, 1, 1, 1 )
insert into bookingroom values (roomnumber, incheckdate, chechoutdate)
insert into bookgingroom values (4, '2018-06-01','2019-08-02')
因此,当我执行语句时,触发器将仅执行第二次操作。