postgresql - guide - Postgres sql falla en el error de script
psql guide (3)
¿Hay alguna manera de especificar que al ejecutar un script sql se detiene al encontrar el primer error en el script, por lo general continúa, independientemente de los errores anteriores.
Gracias
Creo que la solución para agregar lo siguiente a .psqlrc está lejos de la perfección
/set ON_ERROR_STOP on
existe una forma mucho más simple y conveniente: use psql con el parámetro:
psql -v ON_ERROR_STOP=1
es mejor usar también el parámetro -X
desactivar el uso del archivo .psqlrc. Funciona perfectamente para mi
ps la solución encontrada en la gran publicación de Peter Eisentraut. Gracias, Peter! http://petereisentraut.blogspot.com/2010/03/running-sql-scripts-with-psql.html
No es exactamente lo que quieres, pero si comienzas tu script con begin transaction;
y termina con la end transaction;
, en realidad saltará todo después del primer error, y luego revertirá todo lo que hizo antes del error.
Supongo que está utilizando psql
, esto podría ser útil para agregar a su archivo ~/.psqlrc
.
/set ON_ERROR_STOP on
Esto lo hará abortar en el primer error. Si no lo tiene, incluso con una transacción, seguirá ejecutando su secuencia de comandos pero fallará en todo hasta el final de su secuencia de comandos.
Y probablemente quiera usar una transacción como dijo Paul. Que también se puede hacer con psql --single-transaction ...
si no quieres alterar el script.
Así que un ejemplo completo, con ON_ERROR_STOP en su .psqlrc:
psql --single-transaction --file /your/script.sql