Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle inserisce automaticamente il record nel blocco multirecord parte 2

DUPLICATE_RECORD è una procedura ristretta e non puoi usarla in WHEN-VALIDATE-RECORD trigger (o qualsiasi altro dello stesso tipo).

Dato che devi passare al record successivo (se vuoi copiarlo), anche se metti quella procedura riservata in un'altra unità di programma PL/SQL, tutto verrà semplicemente propagato e - in definitiva - solleva lo stesso errore. Allora... sei sfortunato.

Anche se hai scritto una procedura (memorizzata) che inserirebbe quella riga "Jr" nel database da qualche parte dietro le quinte, dovresti recuperare quei valori sullo schermo. Come EXECUTE_QUERY è il modo per farlo, e poiché è (l'ennesima) procedura ristretta, non funzionerà nemmeno questo.

Se hai pianificato di cancellare il blocco di dati e riempirlo manualmente (usando un ciclo), dovresti passare al record successivo (e successivo e successivo) con NEXT_RECORD , e anche questa è una procedura ristretta. Inoltre, se fosse un blocco di dati (e sì, lo è), creeresti effettivamente duplicati per tutti i record una volta che avresti salvato le modifiche, così:o fallirebbe con una violazione del vincolo univoco (che è positivo) o creeresti duplicati (che è peggio).

A proposito, cosa c'è che non va in WHEN-NEW-RECORD-INSTANCE ? Che problemi hai quando lo usi?