Il y a deux options ici. Soit vous devez définir la contrainte à différer dans la transaction en utilisant la commande ci-dessous
SET CONSTRAINTS ALL DEFERRED;
Cela devrait être exécuté avant de faire la UPDATE
déclaration que vous avez définie.
Vous pouvez également définir la contrainte sur INITIALLY DEFERRED
dans la définition de table
create table test(a number not null initially deferred deferrable, b number);
Après avoir fait l'une ou l'autre de ces choses, vous devriez pouvoir exécuter le DML que vous avez dans la question.