Navicat Blog

Menguasai Syntax Aturan PostgreSQL Apr 19, 2024 by Robert Gravelle

Aturan PostgreSQL menawarkan mekanisme yang kuat untuk mengendalikan eksekusi query dan menerapkan manipulasi data dalam database. Memahami syntax dan penggunaan aturan sangat penting untuk memanfaatkan kapabilitasnya secara efektif. Dalam artikel minggu lalu, kami membahas cara kerja aturan PostgreSQL dan perbedaannya dengan trigger. Tindak lanjut hari ini akan membahas sintaksisnya secara terperinci dengan contoh yang lebih praktis menggunakan "dvdrental" sample database gratis.

Anatomy dari Aturan PostgreSQL

Aturan PostgreSQL terdiri dari beberapa komponen kunci yang mendefiniskan perilaku mereka:

  • CREATE RULE Statement: Untuk membuat aturan, kita bisa menggunakan pernyataanCREATE RULE diikuti oleh nama aturan dan definsii aturan.
  • Rule Event: Aturan dapat ditrigger oleh beberapa event, termasuk SELECT, INSERT, UPDATE, DELETE, atau kombinasi (semuanya)
  • Rule Action: Tindakan mendefinisikan apa yang seharusnya terjadi ketika aturan ditrigger. Ini dapat berupa pernyataan SQL seperti, SELECT, INSERT, UPDATE, DELETE, atau Tindakan kustom.
  • Rule Condition: Kondisi opsional dan memungkinkan aturan untuk ditrigger hanya ketika beberapa kriteria terpenuhi. Mereka khusus menggunakan klausa WHERE.

Contoh Praktikal Menggunakan Sampel Database “dvdrental”

Contoh 1: Memasukkan Audit

Misalkan kita ingin mencatat semua log ke dalam tabel "pelanggan" untuk keperluan audit. Pertama, kita memerlukan tabel untuk menyimpan data audit:

CREATE TABLE customer_audit (
    action_type VARCHAR(10),
    customer_id INT,
    audit_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Kita juga dapat membuat tabel di atas menggunakan Table Designer milik Navicat for PostgreSQL 16. Berikut tampilannya:

customer_audit_table_design (55K)

Sekarang ktia akan membuat aturan bahwa memasukkan catatan ke dalam tabel audit kapanpun pelanggan baru ditambahkan:


CREATE RULE log_customer_insert AS
    ON INSERT TO customer
    DO ALSO
        INSERT INTO customer_audit (action_type, customer_id)
        VALUES ('INSERT', NEW.customer_id);

Di Navicat, Anda akan menemukan aturan untuk tabel berikut pada tab “Rules” di Table Desginer. Berikut adalah aturan log_customer_insert:

log_customer_insert_rule (46K)

Contoh 2: Membatasi Update

Katakan kita ingin untuk mencegah update ke tanggal pengembalian rental setelah sudah di set. Kita dapat membuat aturan yang memblokir percobaan apapun untuk update tanggal pengembalian rental setelah diset pada awalnya:

CREATE RULE prevent_return_date_update AS
    ON UPDATE TO rental
    WHERE OLD.return_date IS NOT NULL AND NEW.return_date IS DISTINCT FROM OLD.return_date
    DO INSTEAD NOTHING;

Berikut adalah aturan prevent_return_date_update di Navicat:

prevent_return_date_update_rule (53K)

Anda dapat mengenali aturan enforce_min_rental_duration dari artikel minggu lalu.

Contoh 3: Transformasi Data

Misalkan kita ingin mengubah format nomor telepon yang disimpan dalam tabel "address" dari format internasional ke format lokal. Kita dapat membuat aturan yang secara otomatis memperbarui nomor telepon setiap kali alamat baru dimasukkan:

CREATE RULE transform_phone_number AS
    ON INSERT TO address
    DO ALSO
        UPDATE address
        SET phone = '+1-' || SUBSTRING(phone FROM 3)
        WHERE address_id = NEW.address_id;

Perlu lebih banyak ruang untuk memasukkan pernyataan Where atau Definition secara lengkap? Mengklik tombol elipsis [...] di samping kotak teks akan membuka area teks besar tempat Anda dapat melihat dan menyusun pernyataan lengkap. Berikut adalah aturan transform_phone_number di Navicat yang menunjukkan Definition lengkap:

transform_phone_number_rule (63K)

Kesimpulan

Aturan PostgreSQL menawarkan perangkat serbaguna untuk mengimplementasikan logika kompleks dan menegakkan integritas data dalam database. Dengan mengeksplorasi berbagai contoh seperti audit snippet, pembatasan update, dan transformasi data, developer dapat memperoleh pemahaman yang lebih mendalam tentang bagaimana aturan dapat diterapkan untuk memenuhi berbagai persyaratan secara efektif. Dengan sistem aturan PostgreSQL yang fleksibel, developer dapat menyesuaikan perilaku database untuk memenuhi kebutuhan bisnis tertentu sekaligus memastikan konsistensi dan keandalan data.

Navicat Blog
Feed Entri
Arsip Blog
Bagikan