Gibt es eine Möglichkeit anzugeben, dass beim Ausführen eines SQL-Skripts der erste Fehler im Skript gestoppt wird, der normalerweise fortgesetzt wird, unabhängig von vorherigen Fehlern.
postgresql
Strahl
quelle
quelle
-v ON_ERROR_STOP=ON
funktioniert auch, zumindest mit 9.2. Ich vermute, dass eine der Varianten von boolean "true" erlaubt ist.Ich gehe davon aus, dass Sie verwenden
psql
, dies könnte nützlich sein, um es Ihrer~/.psqlrc
Datei hinzuzufügen .Dadurch wird es beim ersten Fehler abgebrochen. Wenn Sie es nicht haben, führt es auch bei einer Transaktion Ihr Skript weiter aus, schlägt jedoch bis zum Ende Ihres Skripts bei allem fehl.
Und Sie möchten wahrscheinlich eine Transaktion verwenden, wie Paul sagte. Dies ist auch möglich,
psql --single-transaction ...
wenn Sie das Skript nicht ändern möchten.Ein vollständiges Beispiel mit ON_ERROR_STOP in Ihrer .psqlrc:
quelle
--single-transaction
es verwendet wird,-v ON_ERROR_STOP=1
ist es dennoch notwendig, dass ein Status ungleich Null existiertEs ist nicht genau das, was Sie wollen, aber wenn Sie Ihr Skript mit beginnen
begin transaction;
und damit endenend transaction;
, wird tatsächlich alles nach dem ersten Fehler übersprungen und dann wird alles zurückgesetzt, was es vor dem Fehler getan hat.quelle
Ich verweise immer gerne direkt auf das Handbuch.
Aus dem PostgreSQL-Handbuch :
Standardmäßig beendet psql keinen Fehler, wenn der SQL-Code, den Sie auf dem PostgreSQL-Server ausführen, psql nicht beendet. Es wird den Fehler abfangen und fortfahren. Wenn Sie, wie oben erwähnt, die
ON_ERROR_STOP
Einstellung auf on setzen und psql einen Fehler im SQL-Code abfängt, wird es beendet und kehrt3
zur Shell zurück.quelle