Apakah ada cara untuk menentukan bahwa saat menjalankan skrip sql berhenti saat menghadapi kesalahan pertama pada skrip, biasanya terus berlanjut, terlepas dari kesalahan sebelumnya.
postgresql
sinar
sumber
sumber
-v ON_ERROR_STOP=ON
juga bekerja, setidaknya dengan 9.2. Saya menduga salah satu varian boolean "benar" diizinkan.Saya berasumsi Anda sedang menggunakan
psql
, ini mungkin berguna untuk ditambahkan ke~/.psqlrc
file Anda .Ini akan membatalkannya pada kesalahan pertama. Jika Anda tidak memilikinya, bahkan dengan transaksi itu akan terus mengeksekusi skrip Anda tetapi gagal pada semuanya sampai akhir skrip Anda.
Dan Anda mungkin ingin menggunakan transaksi seperti yang dikatakan Paul. Yang juga bisa dilakukan
psql --single-transaction ...
jika Anda tidak ingin mengubah skrip.Jadi contoh lengkap, dengan ON_ERROR_STOP di .psqlrc Anda:
sumber
--single-transaction
digunakan,-v ON_ERROR_STOP=1
masih diperlukan untuk status tidak nol yang adaIni tidak persis seperti yang Anda inginkan, tetapi jika Anda memulai skrip dengan
begin transaction;
dan diakhiri denganend transaction;
, itu benar-benar akan melewatkan semuanya setelah kesalahan pertama, dan kemudian akan mengembalikan semua yang dilakukannya sebelum kesalahan.sumber
Saya selalu suka merujuk manual secara langsung.
Dari Manual PostgreSQL :
Secara default jika kode sql yang Anda jalankan di server PostgreSQL error psql tidak akan menghentikan kesalahan. Ini akan menangkap kesalahan dan melanjutkan. Jika, seperti yang disebutkan di atas, Anda menyetel
ON_ERROR_STOP
pengaturan ke aktif, ketika psql menemukan kesalahan dalam kode sql, ia akan keluar dan kembali3
ke shell.sumber