sql - procedimientos - Crear o reemplazar desencadenador postgres
manual de postgresql 10 en español pdf (2)
Postres tiene la transacción DDL, por lo que BEGIN > DROP > CREATE > COMMIT is the equivalent of
CREATE O REPLACE`
https://wiki.postgresql.org/wiki/Transactional_DDL_in_PostgreSQL:_A_Competitive_Analysis es una buena descripción de cómo el DDL transaccional de Postgre se compara con otros sistemas (como Oracle)
Las características planificadas actuales de postgres con respecto a los factores desencadenantes ( https://wiki.postgresql.org/wiki/Todo#Triggers ) no incluyen la adición de la sintaxis REPLACE
Quiero "crear o reemplazar" un disparador para una tabla de postgres. Sin embargo, no hay tal expresión SQL.
Veo que puedo hacer un "DISPARO DE LA GOTA SI EXISTE" primero ( http://www.postgresql.org/docs/9.5/static/sql-droptrigger.html ).
Mi pregunta es:
- ¿Hay una opción recomendada / mejor que (desencadenador DROP + CREATE)
- ¿Hay alguna razón por la cual no haya tal "activador de crear o reemplazar" (lo que podría implicar que no debería querer hacerlo)?
Tenga en cuenta que hay un "Crear o reemplazar un desencadenador" en el oráculo ( https://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm ). Entonces,
- ¿Está planeado tal comando para Postgres?
No hay forma de crear o reemplazar un disparador, pero se puede hacer de esta manera
DROP TRIGGER IF EXISTS yourtrigger_name on "yourschemaname"."yourtablename";