DUPLICATE_RECORD
jest procedurą ograniczoną i nie można jej użyć w WHEN-VALIDATE-RECORD
wyzwalacz (lub dowolny inny tego samego rodzaju).
Ponieważ musisz przejść do następnego rekordu (jeśli chcesz go skopiować), nawet jeśli zastosujesz tę procedurę ograniczoną do innej jednostki programu PL/SQL, wszystko będzie się po prostu rozprzestrzeniać i - ostatecznie - podnoszą ten sam błąd. Więc... nie masz szczęścia.
Nawet jeśli napisałbyś procedurę (przechowywaną), która wstawiałaby ten wiersz "Jr" do bazy danych gdzieś za sceną, musiałbyś pobrać te wartości na ekran. Jako EXECUTE_QUERY
jest to sposób na zrobienie tego, a ponieważ jest to (kolejna) procedura ograniczona, to również nie zadziała.
Jeśli planujesz wyczyścić blok danych i wypełnić go ręcznie (za pomocą pętli), będziesz musiał przejść do następnego (i następnego i następnego) rekordu za pomocą NEXT_RECORD
, i to znowu procedura ograniczona. Poza tym, gdyby był to blok danych (a tak, tak jest), faktycznie utworzyłbyś duplikaty dla wszystkich rekordów, gdy zapisałeś zmiany, więc albo zawiedzie z naruszeniem unikatowego ograniczenia (co jest dobre), albo utworzysz duplikaty (co jest gorsze).
BTW, co jest nie tak z WHEN-NEW-RECORD-INSTANCE
? Jakie masz problemy podczas korzystania z niego?