PL / SQL:仅将条件应用于“插入”而不是“ UPDATING”

时间:2018-06-28 09:26:09

标签: sql oracle plsql

我的要求是仅在COLUMN1 IS NULL时插入表。 我有下面的代码。 但是,这里的问题是,如果使用COLUMN1 is NOT NULL,则更新不会发生。 我希望即使COLUMN1 IS NULL也会进行更新。

如何仅对插入而不对更新应用NULL条件检查?

CREATE OR REPLACE TRIGGER MYTRIGGER 
AFTER INSERT OR UPDATE OR DELETE ON MYTABLE1
FOR EACH ROW
when (NEW.COLUMN1 IS NULL)
BEGIN
IF INSERTING THEN
INSERT INTO MYTABLE2(COLUMN2) VALUES (:NEW.COLUMN1);
 ELSIF UPDATING THEN
UPDATE MYTABLE2 SET COLUMNX = :NEW.COLUMNX;
END IF;
END MYTRIGGER;

1 个答案:

答案 0 :(得分:1)

尝试以下操作:

CREATE OR REPLACE TRIGGER MYTRIGGER 
AFTER INSERT OR UPDATE OR DELETE ON MYTABLE1
FOR EACH ROW
BEGIN
IF INSERTING AND (:NEW.COLUMN1 IS NULL) THEN
INSERT INTO MYTABLE2(COLUMN2) VALUES (:NEW.COLUMN1);
 ELSIF UPDATING THEN
UPDATE MYTABLE2 SET COLUMNX = :NEW.COLUMNX;
END IF;
END MYTRIGGER;

或者您可以为插入和更新创建2个不同的触发器。