hola Jose como estas
Lo que veo yo, por ahi estoy equivocado, en el comando ALTER TABLE dentro del 
loop estás concatenando la cadena de comandos de ALTER TABLE sin una validación 
de si es correcto.
Miraria un poco las condiciones,  el pg_event_trigger_ddl_commands ommand_tag 
devuelve un identificador del tipo de comando (como ALTER TABLE, CREATE TABLE, 
etc.), y al hacer un substring puede que estes trayendo un resultado que no es.
Donde definis el evento me parece que la cláusula WHEN TAG IN ('ALTER TABLE') 
no captura bien el filtro de ALTER TABLE public.claims% como si lo captura en 
la función.
Por ahí alguien con mas experiencia te da un panorama mejor.

Saludos
De: Jose Mario Trujillo [mailto:miac...@gmail.com]
Enviado el: martes, 4 de marzo de 2025 02:15
Para: pgsql-es-ay...@postgresql.org
Asunto: Crear un trigger en alter table.


CUIDADO: Este correo es externo a TRENES ARGENTINOS, no abras vinculos ni 
completes formularios de origenes desconocidos.

Saludos,

Estoy buscando la forma de crear un trigger, lo que busco es que si se agrega 
un atributo a una tabla, este se agregue tambien a a otra tabla.


Este es el codigo que tengo, pero la verdad no he podido ni imprimir las linas 
de depuracion.

CREATE OR REPLACE FUNCTION sync_test_base_claims()

RETURNS event_trigger

LANGUAGE plpgsql

AS $$

DECLARE

    stmt TEXT;

BEGIN

    RAISE NOTICE 'Trigger activated! Checking for ALTER TABLE commands...';

    FOR stmt IN

        SELECT 'ALTER TABLE public.test_base_claims ' || substring(command_tag, 
12)

        FROM pg_event_trigger_ddl_commands()

        WHERE command_tag LIKE 'ALTER TABLE public.claims%'

    LOOP

        RAISE NOTICE 'Executing: SQL%', stmt;

        EXECUTE stmt;

    END LOOP;

END;

$$;





CREATE EVENT TRIGGER sync_test_base_claims_trigger

ON ddl_command_end

WHEN TAG IN ('ALTER TABLE')

EXECUTE FUNCTION sync_test_base_claims();



ALTER table public.claims ENABLE TRIGGER ALL

Algun consejo?


Jose Mario Trujillo
2B5F B819 533E B033 AD55  D965 A2B5 D2AF 0FDF 371E
“El contenido del presente mensaje (y sus anexos) es privado, confidencial y de 
exclusivo uso para el destinatario referenciado; es de público conocimiento que 
las comunicaciones por medio de Internet no permiten asegurar ni garantizar la 
confidencialidad de los mensajes transmitidos, así como tampoco su integridad o 
su correcta recepción; es por ello que SOFSE no se responsabiliza de posibles 
perjuicios derivados de la captura, incorporaciones de virus o cualquier otra 
manipulación efectuada por terceros. Las opiniones expresadas en este mensaje y 
en los archivos adjuntos son propias del remitente y no representan la opinión 
o políticas de SOFSE, salvo que se diga expresamente y el remitente se 
encuentre autorizado para ello”

Reply via email to