我有一张桌子的定义如下:
CREATE TABLE A (
begin date,
end date,
CONSTRAINT ordered_dates CHECK ( begin <= end)
)..and 2触发器关联:
update
之后
在trigger1中,通过计算间隔(=end)在第二个表B中插入。
如果不遵守约束ordered_dates,则表B中插入了错误的值。但是,该约束似乎只在更新期间进行检查,而不是在“前”触发器中检查。
,我是否必须在以前的trigger1中再次测试ordered_date &在此之前会在触发器中意外地引发异常吗??,我知道如何这样做,但在某种程度上我有代码重复。
发布于 2010-01-05 23:30:47
您的触发器是在插入之前触发的,因此它是在应用约束之前获取值。
是的,您需要在插入后检查值或应用触发器。
发布于 2010-01-06 14:34:43
这不是问题,因为当CHECK约束触发并失败时,事务将被中止,因此插入表B将(正确)回滚。
https://stackoverflow.com/questions/2009882
复制相似问题