我需要在PL / SQL中编写触发器。我希望在条件为真时阻止插入。
CREATE OR REPLACE TRIGGER SafeRent AFTER INSERT ON Rent
FOR EACH ROW
DECLARE
BEGIN
IF :NEW.id_status IN (1,2) THEN
DELETE FROM Rent WHERE id_rent = :NEW.id_rent;
END IF;
END;
代码的扩展:如果id_status等于1或2,我想要插入不要完成。
这是我写的触发器。如果条件为真,它会在插入后删除(我想,我没有测试过)记录。
在插入之前有没有办法阻止它?
我正在考虑在“插入之前”中增加例外情况。类型触发器,这是一个很好的解决方案吗?
PS:它必须是触发器,我知道它可以作为Check约束实现。
答案 0 :(得分:5)
触发器是错误的方法。相反,请使用...
(
empid,
empname,
x1 FILLER,
x2 FILLER,
department
)
约束:
check
答案 1 :(得分:2)
我认为你应该使用BEFORE INSERT
触发器。
也许使用Raise_Application_Error()
。
例如:
CREATE OR REPLACE TRIGGER HelloWorld
BEFORE INSERT ON TableA
FOR EACH ROW
BEGIN
IF :NEW.id_status IN (1,2) THEN
Raise_Application_Error (-20100, 'Something to post when raising error.');
END IF;
END;
/