Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle dopo l'aggiornamento attiva la creazione di un collegamento al database pubblico

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.