Consideraciones sobre el rendimiento de PostgreSQL
Los desencadenantes en PostgreSQL son funciones de devolución de llamada de la base de datos que se invocan o ejecutan automáticamente en respuesta a determinados eventos en una tabla o vista concreta. Se utilizan para hacer cumplir las normas empresariales, validar los datos de entrada y mantener la integridad de los datos.
Utilización
Los desencadenantes se emplean cuando necesitas ejecutar automáticamente una función en respuesta a eventos como las operaciones `INSERT`, `UPDATE` o `DELETE` en una tabla. Se definen para actuar antes o después de estos acontecimientos.
sql
CREATETRIGGER trigger_name
{BEFORE|AFTER|INSTEADOF}{ event [OR...]}ON table_name
[FOR[EACH]{ROW|STATEMENT}]EXECUTEPROCEDUREfunction_name(arguments);Con la tecnología de
En esta sintaxis, `CREATE TRIGGER` configura un activador llamado `trigger_name` que ejecuta `function_name` cuando se producen los eventos especificados en `table_name`.
Ejemplos
1. Activador básico de inserción
sql
CREATEORREPLACEFUNCTIONlog_insert()RETURNSTRIGGERAS $$
BEGININSERTINTOaudit_table(action, time)VALUES('INSERT',NOW());RETURNNEW;END;
$$ LANGUAGE plpgsql;CREATETRIGGER insert_audit
AFTERINSERTON my_table
FOREACHROWEXECUTEPROCEDURElog_insert();Con la tecnología de
Este activador registra cada operación de inserción en "mi_tabla" añadiendo un registro a "tabla_de_auditoría".
2. Activador de actualización con lógica condicional
sql
CREATEORREPLACEFUNCTIONcheck_update()RETURNSTRIGGERAS $$
BEGINIFNEW.amount <0THENRAISEEXCEPTION'Amount cannot be negative';ENDIF;RETURNNEW;END;
$$ LANGUAGE plpgsql;CREATETRIGGER check_update_trigger
BEFOREUPDATEON transactions
FOREACHROWEXECUTEPROCEDUREcheck_update();Con la tecnología de
Este activador verifica que la columna "importe" de la tabla "transacciones" no sea negativa antes de las operaciones de actualización.
3. Activador de borrados en cascada
sql
CREATEORREPLACEFUNCTIONcascade_delete()RETURNSTRIGGERAS $$
BEGINDELETEFROM child_table WHERE parent_id =OLD.id;RETURNOLD;END;
$$ LANGUAGE plpgsql;CREATETRIGGER cascading_delete_trigger
AFTERDELETEON parent_table
FOREACHROWEXECUTEPROCEDUREcascade_delete();Con la tecnología de
Este activador garantiza que cuando se elimine una fila de `tabla_padre`, también se eliminen las filas relacionadas en `tabla_hija`.
Consejos y buenas prácticas
Lógica de activación de límites. Mantén las funciones de activación sencillas para minimizar la sobrecarga de rendimiento y evitar la lógica empresarial compleja.
Utiliza activadores a nivel de fila de forma selectiva. Opta por disparadores a nivel de sentencia siempre que sea posible, para reducir el número de ejecuciones. Los desencadenantes a nivel de fila son útiles cuando hay que realizar operaciones en cada fila afectada, mientras que los desencadenantes a nivel de sentencia pueden reducir la sobrecarga al ejecutarse una vez por operación.
Ten cuidado con los activadores recursivos. Asegúrate de que los activadores no se llamen a sí mismos involuntariamente, provocando bucles infinitos.
Prueba a fondo. Prueba exhaustivamente los activadores en un entorno de desarrollo para evaluar su impacto en el rendimiento.
Activadores de documentos. Documenta claramente la finalidad y la lógica de cada activador para futuras referencias y mantenimiento.
Considera los límites de la transacción. Ten en cuenta los límites de las transacciones para asegurarte de que los activadores se comportan como es debido en las transacciones con varios estados.
Controla el rendimiento. Vigila el impacto en el rendimiento de los activadores en un sistema activo y diagnostica cualquier problema utilizando las herramientas de registro y supervisión de PostgreSQL.
Gestionar desencadenantes
Para desactivar temporalmente un activador, utiliza el comando `ALTER TABLE ... comando "DESACTIVAR DISPARO".
Para eliminar permanentemente un disparador, utiliza el comando `DROP TRIGGER`.
Los desencadenantes en PostgreSQL son funciones de devolución de llamada de la base de datos que se invocan o ejecutan automáticamente en respuesta a determinados eventos en una tabla o vista concreta. Se utilizan para hacer cumplir las normas empresariales, validar los datos de entrada y mantener la integridad de los datos.
Utilización
Los desencadenantes se emplean cuando necesitas ejecutar automáticamente una función en respuesta a eventos como las operaciones `INSERT`, `UPDATE` o `DELETE` en una tabla. Se definen para actuar antes o después de estos acontecimientos.
En esta sintaxis, `CREATE TRIGGER` configura un activador llamado `trigger_name` que ejecuta `function_name` cuando se producen los eventos especificados en `table_name`.
Ejemplos
1. Activador básico de inserción
Este activador registra cada operación de inserción en "mi_tabla" añadiendo un registro a "tabla_de_auditoría".
2. Activador de actualización con lógica condicional
Este activador verifica que la columna "importe" de la tabla "transacciones" no sea negativa antes de las operaciones de actualización.
3. Activador de borrados en cascada
Este activador garantiza que cuando se elimine una fila de `tabla_padre`, también se eliminen las filas relacionadas en `tabla_hija`.
Consejos y buenas prácticas
Gestionar desencadenantes