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

Oracle insère automatiquement l'enregistrement dans le bloc multi-enregistrements partie 2

DUPLICATE_RECORD est une procédure restreinte et vous ne pouvez pas l'utiliser dans WHEN-VALIDATE-RECORD déclencheur (ou tout autre du même genre).

Comme vous devez naviguer vers l'enregistrement suivant (si vous voulez le copier), même si vous mettez cette procédure restreinte dans une autre unité de programme PL/SQL, tout va simplement se propager et - finalement - soulever la même erreur. Alors... tu n'as pas de chance.

Même si vous écriviez une procédure (stockée) qui insérerait cette ligne "Jr" dans la base de données quelque part derrière la scène, vous devriez récupérer ces valeurs à l'écran. Comme EXECUTE_QUERY est la façon de le faire, et comme c'est (encore) une procédure restreinte, cela ne fonctionnera pas non plus.

Si vous avez prévu d'effacer le bloc de données et de le remplir manuellement (en utilisant une boucle), vous devrez naviguer vers l'enregistrement suivant (et suivant et suivant) avec NEXT_RECORD , et c'est encore une procédure restreinte. De plus, s'il s'agissait d'un bloc de données (et oui, c'est le cas), vous créeriez en fait des doublons pour tous les enregistrements une fois que vous auriez enregistré les modifications, soit cela échouerait avec une violation de contrainte unique (ce qui est bien), soit vous créeriez des doublons (ce qui est pire).

BTW qu'est-ce qui ne va pas avec WHEN-NEW-RECORD-INSTANCE ? Quels problèmes rencontrez-vous lors de son utilisation ?