Savepoint dan rollback
Melanjutkan pemikiran tentang jumlah deposito berjangka yang akan jatuh tempo dalam waktu dekat. Yang di atas 250 ribu memiliki dampak paling besar pada hasil yang terlihat selama pasar tahun 2008.
RCONHK12 (>=250k) menyimpan yang jatuh tempo dalam tiga bulan ke depan dan RCONHK13 (>=250k) menyimpan yang kedaluwarsa antara 3 hingga 12 bulan. Jika nilainya lebih tinggi dari $1 juta, hal ini dapat menyebabkan kekurangan dana di bank karena ini biasanya nasabah besar yang mungkin juga menarik aset lain. Sekali lagi, ada faktor positif jika nilainya kurang dari $500 ribu.
Saya membuat beberapa kesalahan dalam kode saya dengan menetapkan nilai yang salah untuk yang di atas $500 ribu!
Latihan ini adalah bagian dari kursus
Transaksi dan Penanganan Error di PostgreSQL
Petunjuk latihan
- Di dalam sebuah transaksi, setel
FIELD48menjadimature+jika total deposito yang akan jatuh tempo kurang dari $500 ribu dan tetapkan savepointmatureplus_flag_set. - Setel
FIELD48menjadimature-jika total deposito yang akan jatuh tempo berada antara $500 ribu dan $1 juta lalu tetapkan savepointmatureminus_flag_set. - Setel
FIELD48menjadimature--jika total deposito yang akan jatuh tempo lebih besar dari $100 ribu (bukan $1 juta) — secara "tidak sengaja" menghilangkan sebuah0. - Batalkan kembali hingga tepat setelah kita menyetel rekaman
mature-dan hitung semua bank dengan jadwal jatuh tempo depositomature--.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
BEGIN;
-- Update FIELD48 to indicate a positive maturity rathing when less than $500 thousand.
UPDATE ffiec_reci
SET ___ = '___'
WHERE RCONHK12 + RCONHK13 < 500000;
-- Set a savepoint
SAVEPOINT ___;
-- Update FIELD48 to indicate a negative maturity rathing when between $500 thousand and $1 million.
UPDATE ffiec_reci
___
WHERE RCONHK12 + RCONHK13 BETWEEN ___ AND ___;
-- Set a savepoint
SAVEPOINT ___;
-- Accidentailly update FIELD48 to indicate a double negative maturity rating when more than 100K
UPDATE ffiec_reci
SET ___ = '___'
WHERE RCONHK12 + RCONHK13 > 100000;
-- Rollback to before the last mistake
ROLLBACK TO ___;
-- Select count of records with a double negative indicator
SELECT count(FIELD48)
from ffiec_reci
WHERE FIELD48 = 'mature--';