Oracle
 sql >> Base de données >  >> RDS >> Oracle

Le déclencheur composé Oracle (11g) ne met pas à jour le champ de données CLOB

N'ayant pas le temps de m'attarder sur ce problème, je l'ai résolu en utilisant une variable.

Déclarer une variable CLOB dans la section de déclaration et lui attribuer la valeur de :new.clob_field soit dans BEFORE EACH ROW, soit AFTER EACH ROW, et utiliser la variable dans votre instruction d'insertion/mise à jour plutôt que :new.clob_field dans le déclencheur résout ce problème.

Je suis tombé sur de nombreux messages de personnes aux prises avec ce problème (déclencheurs composés en particulier, pas de déclencheurs simples), alors j'espère que le temps que j'ai passé sur ce sujet aidera quelqu'un d'autre et lui fera gagner du temps.

Il serait vraiment utile pour ma santé mentale si quelqu'un tombe sur ce message qui connaît la raison pour laquelle :new.clob_field perd sa valeur dans un déclencheur composé lorsqu'il est utilisé dans les instructions d'insertion/mise à jour dans la section AVANT/APRÈS chaque ligne. Ce serait terrible de mourir un jour avec cette pensée coincée dans mon esprit...

Je supposerai également que cela fonctionnerait également pour BLOB (si cela pose un problème).