如果其他列为空,如何使 beforeInsert 触发器在列中设置特定值

how to make beforeInsert trigger to set specific value in column if other column is null

我有这个 table ,我想在插入触发器之前制作

这将检查新插入的值是否在 A 列中为空,然后它将在 B 列中插入 0 + 它将 created_On 设置为 sysdate

这是我想要的输出

COLUMN_A COLUMN_B CREATED_BY UPDATE_BY
  null     0       sysdate   sysdate
  12       1       sysdate   sysdate

这是我的触发器

CREATE OR REPLACE TRIGGER SCH.TABLEA_TRG BEFORE 
 INSERT or update
 ON SCH.TABLEA REFERENCING OLD AS old NEW AS new
FOR EACH ROW
begin
if inserting then
:NEW.CREATED_ON := sysdate ;
:NEW.UPDATED_ON := sysdate ;
if :COLUMN_A  is null
 then set :new.COLUMN_B 0
else  :COLUMN_A  is not null
then set :new.COLUMN_B 1 
elsif updating then
:NEW.UPDATED_ON := sysdate ;
end if;

end;

但是它有语法错误,无法理解

有几个错误 - 在某些绑定变量之前缺少 :NEW,缺少 end if,没有 "set" 命令,列名不正确。这似乎可以编译。

CREATE OR REPLACE TRIGGER tablea_trg BEFORE
    INSERT OR UPDATE ON tablea
    REFERENCING
            OLD AS old
            NEW AS new
    FOR EACH ROW
BEGIN
    IF inserting THEN
        :new.created_on := SYSDATE;
        :new.updated_on := SYSDATE;
        IF :new.column_a IS NULL THEN
            :new.column_b := 0;
        ELSE
            IF :new.column_a IS NOT NULL THEN
                :new.column_b := 1;
            END IF;
        END IF;

    ELSIF updating THEN
        :new.updated_on := SYSDATE;
    END IF;
END;

无论多么枯燥,Oracle Help 总是一个很好的参考。