Mulai sekarangMulai gratis

Beberapa blok pengecualian

Karena ROLLBACK TO dan SAVEPOINT tidak dapat digunakan dalam fungsi dengan penangan pengecualian, kita dapat meniru perilaku yang sama menggunakan blok bersarang. Blok-blok ini digunakan untuk mengelompokkan dan mengurutkan pernyataan sesuai urutan ketergantungannya. Di sini Anda akan menyisipkan sekumpulan record dengan penangan pengecualian yang meniru SAVEPOINT, lalu memperbarui sebuah record dengan penangan pengecualian. Pernyataan update tersebut akan menghasilkan error, dan penangan pengecualian akan otomatis melakukan rollback hanya pada blok itu saja.

Latihan ini merupakan bagian dari kursus

Transaksi dan Penanganan Error di PostgreSQL

Lihat Kursus

Instruksi latihan

  • Pada blok pertama, sisipkan record berikut ke dalam patients (a1c=5.6, glucose=93, dan fasting=TRUE), (6.3, 111, TRUE) (4.7, 65, TRUE) dengan penangan EXCEPTION yang menyisipkan 'failed to insert' sebagai msg ke dalam errors.
  • Buka blok bersarang kedua dan perbarui pasien dengan ID 1 agar memiliki nilai fasting 'true' dengan penanganan pengecualian yang mencatat ke tabel errors dengan msg 'Inserted string into boolean.'.
  • END kedua blok.

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

-- Make a DO function
DO $$
-- Open a transaction block
BEGIN
    -- Open a nested block
    BEGIN
    	INSERT INTO ___ (___, ___, ___) 
        VALUES (5.6, 93, TRUE), ___, ___;
    -- Catch all exception types
    EXCEPTION WHEN others THEN
    	INSERT INTO ___ (msg) VALUES ('failed to insert');
    -- End nested block
    END;
    -- Begin the second nested block
	BEGIN
    	UPDATE patients SET ___ = '___' WHERE id=1;
    -- Catch all exception types
    EXCEPTION WHEN others THEN
        INSERT INTO errors (msg) VALUES ('Inserted ___ into ___.');
    -- End the second nested block
    END;
-- END the outer block
END;
$$ language 'plpgsql';
SELECT * FROM errors;
Edit dan Jalankan Kode