DUPLICATE_RECORD
je omezená procedura a nemůžete ji použít v WHEN-VALIDATE-RECORD
trigger (nebo jakýkoli jiný stejného druhu).
Protože musíte přejít na další záznam (pokud jej chcete zkopírovat), i když zadáte tento omezený postup do jiné programové jednotky PL/SQL se vše jen rozšíří a - nakonec - vyvolat stejnou chybu. Takže ... máte smůlu.
I kdybyste napsali (uloženou) proceduru, která by vložila řádek „Jr“ do databáze někde v zákulisí, museli byste tyto hodnoty načíst na obrazovku. Jako EXECUTE_QUERY
je způsob, jak to udělat, a protože jde o (další) omezený postup, nebude fungovat ani to.
Pokud jste plánovali vymazat datový blok a vyplnit jej ručně (pomocí smyčky), museli byste přejít na další (a další a další) záznam pomocí NEXT_RECORD
, a to je opět užší řízení. Kromě toho, pokud by šlo o datový blok (a ano, je), ve skutečnosti byste vytvořili duplikáty pro všechny záznamy, jakmile uložíte změny - buď by to selhalo s jedinečným porušením omezení (což je dobré), nebo byste vytvořili duplikáty (což je horší).
BTW co je špatného na WHEN-NEW-RECORD-INSTANCE
? Jaké problémy máte při používání?