At oprette et databaselink i farten virker som en usædvanlig ting at gøre; dit skema skal generelt være statisk og stabilt. Men hvis du skal, ville det være nemmere at pakke opdateringen og linket ind i en procedure eller bare udsende to erklæringer - formodentlig er uanset hvad der udfører opdateringen nogenlunde kontrolleret alligevel, ellers ville du skulle håndtere flere personer, der udløser denne multiple gange, hvilket ville være endnu mere rod.
Du kan sikkert få dette til at fungere ved at tilføje PRAGMA autonomous_transaction;
til din trigger, som vist for et lignende problem (oprettelse af en visning i stedet for et link) i dette svar , men jeg er ikke i stand til at teste det i øjeblikket.
create or replace
TRIGGER CreateLinkTrigger
after UPDATE of Year ON tableInit
for each row
DECLARE
add_link VARCHAR2(200);
PRAGMA autonomous_transaction;
BEGIN
...
Du kan også få triggeren til at sende et asynkront job for at udføre DDL, som beskrevet i dette svar , og der er mere af et eksempel i dette svar
, hvor du ville ændre jobbets anonyme blokering for at udføre din execute immediate
.
Det ville nok være bedre blot at oprette links for de næste par år i forvejen under et vedligeholdelsesvindue, eller efter en tidsplan eller fra en procedure; i stedet for at forsøge at knytte en skemaændring til en dataændring.