Oracle ORA-25006用于更新CLOB列

Oracle ORA-25006用于更新CLOB列,oracle,triggers,Oracle,Triggers,我试图避免在CLOB列中使用空值进行更新(由于其他原因,该列不能具有NOTNULL约束) 我写了这个触发器: create or replace TRIGGER "TEST_NULL" BEFORE UPDATE OR INSERT OF MY_CLOB_COLUMN ON T FOR EACH ROW begin if (:old.MY_CLOB_COLUMN is not null and :new.MY_CLOB_COLUMN is null) then RAI

我试图避免在CLOB列中使用空值进行更新(由于其他原因,该列不能具有NOTNULL约束)

我写了这个触发器:

create or replace TRIGGER "TEST_NULL"
BEFORE UPDATE OR INSERT OF MY_CLOB_COLUMN
ON T
FOR EACH ROW
begin

     if (:old.MY_CLOB_COLUMN is not null and :new.MY_CLOB_COLUMN is null) then

       RAISE_APPLICATION_ERROR(-20001, 'error');

     end if;  

END;
然而,我得到了一份工作

ORA-25006:无法在更新子句中指定此列


如何解决此问题?

您需要删除列名的
,并且您只需要将其作为
更新的一部分:

create or replace TRIGGER "TEST_NULL"
BEFORE UPDATE ON T
FOR EACH ROW
begin
     if (:old.MY_CLOB_COLUMN is not null and :new.MY_CLOB_COLUMN is null) then
       RAISE_APPLICATION_ERROR(-20001, 'error');
     end if;  
END;

谢谢我认为我需要检查该列(实际上,表中有许多CLOB列),但是该逻辑可以应用于表上的任何更新。