From: | "Romero, Fernando" <Fernando(dot)Romero(at)trenesargentinos(dot)gob(dot)ar> |
---|---|
To: | Jose Mario Trujillo <miactin(at)gmail(dot)com>, "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | RE: Crear un trigger en alter table. |
Date: | 2025-03-06 15:52:40 |
Message-ID: | 2a447eb59ed04ce591f8271df6eea85a@trenesargentinos.gob.ar |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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:miactin(at)gmail(dot)com]
Enviado el: martes, 4 de marzo de 2025 02:15
Para: pgsql-es-ayuda(at)postgresql(dot)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”
From | Date | Subject | |
---|---|---|---|
Next Message | Alejandro Carrillo | 2025-03-06 22:01:11 | MFA o 2FA con Google Authenticator y pgAdmin en cluster postgreSQL |
Previous Message | Jaime Soler | 2025-03-06 11:16:27 | Re: comenzado con barman |