Att skapa en databaslänk i farten verkar vara en ovanlig sak att göra; ditt schema bör i allmänhet vara statiskt och stabilt. Men om du måste, skulle det vara enklare att slå in uppdateringen och länken i en procedur, eller bara utfärda två uttalanden - förmodligen är vad som än utför uppdateringen ganska kontrollerat ändå, annars skulle du behöva hantera flera personer som utlöser denna multipel gånger, vilket skulle vara ännu mer av en enda röra.
Du kan förmodligen få det här att fungera genom att lägga till PRAGMA autonomous_transaction;
till din utlösare, som visas för ett liknande problem (att skapa en vy snarare än en länk) i det här svaret , men jag är inte i stånd att testa det för tillfället.
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 också få utlösaren att skicka ett asynkront jobb för att utföra DDL, som beskrivs i det här svaret , och det finns fler exempel i det här svaret
, där du skulle ändra jobbets anonyma blockering för att execute immediate
.
Det skulle förmodligen vara bättre att bara skapa länkarna för de närmaste åren i förväg under ett underhållsfönster, eller enligt ett schema eller från en procedur; istället för att försöka koppla en schemaändring till en dataändring.