Existe uma maneira de especificar que ao executar um script sql ele pare ao encontrar o primeiro erro no script, ele geralmente continua, independentemente dos erros anteriores.
postgresql
Raio
fonte
fonte
-v ON_ERROR_STOP=ON
também funciona, pelo menos com 9.2. Suspeito que qualquer uma das variantes do booleano "verdadeiro" seja permitida.Presumo que você esteja usando
psql
, isso pode ser útil para adicionar ao seu~/.psqlrc
arquivo.Isso o fará abortar no primeiro erro. Se você não o tiver, mesmo com uma transação, ele continuará executando o seu script, mas falhará em tudo até o final do seu script.
E você provavelmente deseja usar uma transação, como Paulo disse. O que também pode ser feito
psql --single-transaction ...
se você não quiser alterar o script.Portanto, um exemplo completo, com ON_ERROR_STOP em seu .psqlrc:
fonte
--single-transaction
for usado,-v ON_ERROR_STOP=1
ainda é necessário para um status existente diferente de zeroNão é exatamente o que você deseja, mas se você iniciar seu script com
begin transaction;
e terminar comend transaction;
, ele na verdade pulará tudo após o primeiro erro e, em seguida, fará rollback de tudo o que fez antes do erro.fonte
Sempre gosto de consultar o manual diretamente.
Do manual do PostgreSQL :
Por padrão, se o código sql que você está executando no servidor PostgreSQL, o erro psql não encerrará o erro. Ele detectará o erro e continuará. Se, conforme mencionado acima, você definir a
ON_ERROR_STOP
configuração como on, quando o psql detectar um erro no código sql, ele sairá e retornará3
ao shell.fonte