DUPLICATE_RECORD
är ett begränsat förfarande och du kan inte använda det i WHEN-VALIDATE-RECORD
trigger (eller någon annan av samma slag).
Eftersom du måste navigera till nästa post (om du vill kopiera den), även om du sätter den begränsade proceduren in i en annan PL/SQL-programenhet kommer allt bara att spridas och - i slutändan - ta upp samma fel. Så ... du har ingen tur.
Även om du skrev en (lagrad) procedur som skulle infoga den där "Jr"-raden i databasen någonstans bakom scenen, måste du hämta dessa värden till skärmen. Som EXECUTE_QUERY
är sättet att göra det, och eftersom det är (ännu ett) selektivt förfarande, kommer det inte heller att fungera.
Om du planerade att rensa datablock och fylla det manuellt (genom att använda en slinga), måste du navigera till nästa (och nästa, och nästa) post med NEXT_RECORD
, och det är återigen ett selektivt förfarande. Dessutom, om det var ett datablock (och ja, det är det), skulle du faktiskt skapa dubbletter för alla poster när du väl hade sparat ändringar så - antingen skulle det misslyckas med unika begränsningsöverträdelser (vilket är bra), eller så skapar du dubbletter (vilket är värre).
BTW, vad är det för fel på WHEN-NEW-RECORD-INSTANCE
? Vilka problem har du när du använder den?