SQL> SQL> -- Update clob column with DBMS_LOB will not fire triggers on the base table. SQL> SQL> drop table t1_a; drop table t1_a * ERROR at line 1: ORA-00942: table or view does not exist SQL> drop table t1_a_log; drop table t1_a_log * ERROR at line 1: ORA-00942: table or view does not exist SQL> drop sequence t1_a_seq; drop sequence t1_a_seq * ERROR at line 1: ORA-02289: sequence does not exist SQL> create sequence t1_a_seq; Sequence created. SQL> create table t1_a (id number primary key, c1 clob); Table created. SQL> create table t1_a_log (c1 varchar2(100)); Table created. SQL> insert into t1_a values(1,'xxx'); 1 row created. SQL> insert into t1_a values(2,'yyy'); 1 row created. SQL> commit; Commit complete. SQL> SQL> create or replace trigger t1_a_trg 2 before update on t1_a 3 for each row 4 declare 5 pragma autonomous_transaction; 6 begin 7 insert into t1_a_log values('updating row, count: '||t1_a_seq.nextval); 8 commit; 9 end; 10 / Trigger created. SQL> SQL> -- Simple update to the clob column SQL> update t1_a set c1='xxx + some more text here' where id=1; 1 row updated. SQL> SQL> -- Trgger fired... SQL> select * from t1_a_log; C1 -------------------------------------------------------------------------------- updating row, count: 1 SQL> select * from t1_a; ID ---------- C1 -------------------------------------------------------------------------------- 1 xxx + some more text here 2 yyy SQL> SQL> -- Using BDMS_LOB package to do the update SQL> declare 2 x clob; 3 begin 4 select c1 into x from t1_a where id=2 for update; 5 dbms_lob.append(x,' + added text with dbms_lob.append'); 6 end; 7 / PL/SQL procedure successfully completed. SQL> SQL> -- Trigger did not fire, trouble here SQL> select * from t1_a_log; C1 -------------------------------------------------------------------------------- updating row, count: 1 SQL> select * from t1_a; ID ---------- C1 -------------------------------------------------------------------------------- 1 xxx + some more text here 2 yyy + added text with dbms_lob.append SQL> SQL> -- Insert empty_lob then write to it... SQL> set serveroutput on SQL> declare 2 x clob; 3 icnt number; 4 begin 5 insert into t1_a(id, c1) values(3,empty_clob()) return c1 into x; 6 dbms_lob.write(x,60,1,'Text written to the empty_clob with dbms_lob.write.....................hello!'); 7 end; 8 / PL/SQL procedure successfully completed. SQL> SQL> -- Trigger did not fire, trouble here too SQL> select * from t1_a_log; C1 -------------------------------------------------------------------------------- updating row, count: 1 SQL> select * from t1_a; ID ---------- C1 -------------------------------------------------------------------------------- 1 xxx + some more text here 2 yyy + added text with dbms_lob.append 3 Text written to the empty_clob with dbms_lob.write.......... SQL> SQL> drop table t1_a_log; Table dropped. SQL> drop table t1_a; Table dropped. SQL> drop sequence t1_a_seq; Sequence dropped. SQL> SQL> spool off