DUPLICATE_RECORD
е ограничена процедура и не можете да я използвате в WHEN-VALIDATE-RECORD
тригер (или друг от същия вид).
Тъй като трябва да преминете към следващия запис (ако искате да го копирате), дори ако поставите тази ограничена процедура в друга PL/SQL програмна единица, всичко просто ще разпространи и - в крайна сметка - повдига същата грешка. Така че ... нямате късмет.
Дори ако сте написали (съхранена) процедура, която ще вмъкне този ред "Jr" в базата данни някъде зад сцената, ще трябва да извлечете тези стойности на екрана. Като EXECUTE_QUERY
е начинът да го направите и тъй като това е (още една) ограничена процедура, това също няма да работи.
Ако сте планирали да изчистите блока с данни и да го попълните ръчно (чрез използване на цикъл), ще трябва да преминете към следващия (и следващия, и следващия) запис с NEXT_RECORD
, и това отново е ограничена процедура. Освен това, ако това беше блок с данни (и да, такъв е), всъщност бихте създали дубликати за всички записи, след като запазите промените, така че - или ще се провали с нарушение на уникалното ограничение (което е добре), или ще създадете дубликати (което е по-лошо).
BTW какво не е наред с WHEN-NEW-RECORD-INSTANCE
? Какви проблеми имате, когато го използвате?