sql >> Base de Datos >  >> RDS >> Oracle

Oracle después de la activación de la actualización creando un enlace de base de datos pública

Crear un enlace de base de datos sobre la marcha parece algo inusual; su esquema generalmente debe ser estático y estable. Sin embargo, si es necesario, sería más sencillo envolver la actualización y el enlace en un procedimiento, o simplemente emitir dos declaraciones; presumiblemente, lo que sea que realice la actualización está bastante controlado de todos modos, de lo contrario, tendría que tratar con varias personas que activan este múltiple. veces, lo que sería aún más complicado.

Probablemente pueda hacer que esto funcione agregando PRAGMA autonomous_transaction; a su disparador, como se demostró para un problema similar (crear una vista en lugar de un enlace) en esta respuesta , pero no estoy en posición de probar eso en este momento.

create or replace
TRIGGER CreateLinkTrigger
after UPDATE of Year ON tableInit 
for each row
DECLARE
    add_link VARCHAR2(200);
    PRAGMA autonomous_transaction;
BEGIN
    ...

También puede hacer que el activador envíe un trabajo asíncrono para realizar el DDL, como se describe en esta respuesta , y hay más de un ejemplo en esta respuesta , donde cambiaría el bloque anónimo del trabajo para hacer su execute immediate .

Probablemente sería mejor simplemente crear los enlaces para los próximos años por adelantado durante una ventana de mantenimiento, o según un cronograma, oa partir de un procedimiento; en lugar de intentar asociar un cambio de esquema a un cambio de datos.