全部产品
Search
文档中心

PolarDB:Trigger tingkat baris BEFORE

更新时间:Jul 02, 2025

Topik ini menjelaskan trigger tingkat baris BEFORE dalam tabel partisi PolarDB for PostgreSQL (Compatible with Oracle), serta pengaturan kompatibilitasnya.

Saat memperbarui data lintas partisi, PostgreSQL dan Oracle menggunakan perilaku trigger yang berbeda.

  • PostgreSQL: Trigger dari beberapa tabel partisi dipicu.
  • Oracle: Trigger yang relevan hanya dipicu satu kali.

Secara default, PolarDB for PostgreSQL (Compatible with Oracle) kompatibel dengan perilaku trigger Oracle.

Catatan
  • Trigger tingkat baris AFTER tidak kompatibel dengan perilaku trigger Oracle.
  • Trigger tingkat pernyataan digunakan dengan cara yang sama seperti pada tabel standar.

Pengaturan parameter

Anda dapat mengontrol kompatibilitas trigger tingkat baris BEFORE menggunakan polar_compatible_oracle_trigger.

  • polar_compatible_oracle_trigger = off

    Pengaturan ini menunjukkan bahwa PolarDB for PostgreSQL (Compatible with Oracle) menggunakan perilaku trigger PostgreSQL. Jika data diperbarui lintas partisi, trigger dari beberapa tabel dipicu.

    Untuk mengatur polar_compatible_oracle_trigger ke off, jalankan pernyataan berikut:

    SET polar_compatible_oracle_trigger = off;

    Blok kode berikut memberikan contoh penggunaan pengaturan ini:

    create trigger t before insert or update or delete on parted
      for each row execute function trigger_function();
    insert into parted values (1, 1, 'uno uno v1');
    NOTICE:  parted_1: BEFORE ROW INSERT
    update parted set a = 2;
    NOTICE:  parted_1: BEFORE ROW UPDATE
    NOTICE:  parted_1: BEFORE ROW DELETE
    NOTICE:  parted_2: BEFORE ROW INSERT
    delete from parted;
    NOTICE:  parted_2: BEFORE ROW DELETE
  • polar_compatible_oracle_trigger = on

    Pengaturan ini menunjukkan bahwa PolarDB for PostgreSQL (Compatible with Oracle) menggunakan perilaku trigger Oracle. Jika data diperbarui lintas partisi, trigger yang relevan hanya dipicu satu kali.

    Untuk mengatur polar_compatible_oracle_trigger ke on, jalankan pernyataan berikut:

    SET polar_compatible_oracle_trigger = on;

    Blok kode berikut memberikan contoh penggunaan pengaturan ini:

    insert into parted values (1, 1, 'uno uno v1');
    NOTICE:  parted_1: BEFORE ROW INSERT
    update parted set a = 2;
    NOTICE:  parted_1: BEFORE ROW UPDATE
    delete from parted;
    NOTICE:  parted_2: BEFORE ROW DELETE