La creazione di un collegamento al database al volo sembra una cosa insolita da fare; il tuo schema dovrebbe generalmente essere statico e stabile. Tuttavia, se necessario, sarebbe più semplice racchiudere l'aggiornamento e il collegamento in una procedura, o semplicemente emettere due istruzioni - presumibilmente qualunque cosa esegua l'aggiornamento è comunque abbastanza controllata, altrimenti dovresti avere a che fare con più persone che attivano questo multiplo volte, che sarebbe ancora più un pasticcio.
Probabilmente puoi farlo funzionare aggiungendo PRAGMA autonomous_transaction;
al trigger, come dimostrato per un problema simile (creazione di una vista anziché di un collegamento) in questa risposta , ma al momento non sono in grado di testarlo.
create or replace
TRIGGER CreateLinkTrigger
after UPDATE of Year ON tableInit
for each row
DECLARE
add_link VARCHAR2(200);
PRAGMA autonomous_transaction;
BEGIN
...
Puoi anche fare in modo che il trigger invii un lavoro asincrono per eseguire il DDL, come descritto in questa risposta e c'è più di un esempio in questa risposta
, dove cambieresti il blocco anonimo del lavoro per eseguire il tuo execute immediate
.
Probabilmente sarebbe meglio solo creare i collegamenti per i prossimi anni in anticipo durante una finestra di manutenzione, o in base a una pianificazione, o da una procedura; piuttosto che provare ad associare una modifica dello schema a una modifica dei dati.