Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Verbundauslöser von Oracle (11g) aktualisiert das CLOB-Datenfeld nicht

Da ich keine Zeit hatte, bei diesem Problem zu verweilen, löste ich es, indem ich eine Variable verwendete.

Deklarieren Sie eine CLOB-Variable im Deklarationsabschnitt und weisen Sie ihr den Wert von :new.clob_field entweder in BEFORE EACH ROW oder AFTER EACH ROW zu und verwenden Sie die Variable in Ihrer Insert/Update-Anweisung anstelle von :new.clob_field innerhalb des Triggers löst dieses Problem.

Ich bin auf viele Posts von Leuten gestoßen, die damit zu kämpfen haben (insbesondere zusammengesetzte Trigger, nicht einfache Trigger), also hoffe ich, dass die Zeit, die ich dafür aufgewendet habe, jemand anderem hilft und Zeit spart.

Es wäre wirklich hilfreich für meinen Verstand, wenn jemand auf diesen Beitrag stößt, der den Grund kennt, warum :new.clob_field seinen Wert in einem zusammengesetzten Trigger verliert, wenn es in Insert/Update-Anweisungen im BEFORE/AFTER-Abschnitt jeder Zeile verwendet wird. Es wäre schrecklich, eines Tages mit diesem Gedanken in meinem Kopf zu sterben ...

Ich gehe auch davon aus, dass dies auch für BLOB funktionieren würde (falls dies ein Problem verursacht).