全部产品
Search
文档中心

ApsaraDB RDS:Pembaruan Otomatis Kolom Waktu

更新时间:Jul 02, 2025

Anda dapat mengonfigurasi parameter on_update_set_default untuk instance ApsaraDB RDS for PostgreSQL guna memperbarui kolom waktu tertentu secara otomatis tanpa menggunakan pemicu (triggers).

Prasyarat

  • Instance RDS menjalankan PostgreSQL 15 atau yang lebih baru.

  • Instance RDS menjalankan versi mesin minor 20241230 atau yang lebih baru.

    Catatan

    Untuk informasi lebih lanjut tentang cara memperbarui versi mesin minor suatu instance, lihat Perbarui Versi Mesin Minor.

Ikhtisar

Dalam beberapa kasus, aplikasi memerlukan mekanisme pembaruan otomatis untuk kolom waktu dalam tabel ketika baris data diperbarui, terlepas dari apakah kolom waktu didefinisikan secara eksplisit dalam pernyataan. Di PostgreSQL asli, Anda hanya dapat menggunakan pemicu (triggers) untuk mencapai tujuan ini. Di RDS for PostgreSQL, Anda dapat mengonfigurasi parameter on_update_set_default untuk memperbarui kolom waktu tertentu secara otomatis tanpa menggunakan pemicu.

Fitur ini mendukung pembaruan kolom waktu dengan tipe data berikut: TIMESTAMP, TIMESTAMPTZ, DATE, TIME, TIMETZ, dan INTERVAL.

Aktifkan pembaruan otomatis untuk kolom waktu tertentu

Anda dapat menggunakan sintaksis berikut untuk mengaktifkan pembaruan otomatis pada kolom waktu tertentu dengan menyetel parameter on_update_set_default ke true:

ALTER TABLE <test> ALTER COLUMN <update_time> SET(on_update_set_default=true);

Contoh

  1. Buat tabel bernama test dan sisipkan satu baris data uji ke tabel tersebut.

    CREATE TABLE test (id INT, create_time TIMESTAMPTZ DEFAULT now(), update_time TIMESTAMPTZ DEFAULT now());
    
    INSERT INTO test VALUES(1);
    
    SELECT * FROM test;

    Hasil contoh:

     id |          create_time          |          update_time          
    ----+-------------------------------+-------------------------------
      1 | 2025-01-09 16:07:48.481879+08 | 2025-01-09 16:07:48.481879+08
  2. Perbarui data di tabel test.

    UPDATE test SET id=2;
    
    SELECT * FROM test;

    Hasil contoh:

     id |          create_time          |          update_time          
    ----+-------------------------------+-------------------------------
      2 | 2025-01-09 16:07:48.481879+08 | 2025-01-09 16:07:48.481879+08

    Seperti yang ditunjukkan dalam hasil, kolom waktu (update_time) tidak diperbarui.

  3. Atur parameter on_update_set_default ke true untuk kolom update_time di tabel test untuk mengaktifkan pembaruan otomatis pada kolom tersebut.

    ALTER TABLE test ALTER COLUMN update_time SET(on_update_set_default=true);
    
    SELECT attoptions FROM pg_attribute WHERE attname='update_time';

    Hasil contoh:

              attoptions          
    ------------------------------
     {on_update_set_default=true}
  4. Perbarui data di tabel test.

    UPDATE test SET id=3;
    
    SELECT * FROM test;

    Hasil contoh:

     id |          create_time          |          update_time          
    ----+-------------------------------+-------------------------------
      3 | 2025-01-09 16:07:48.481879+08 | 2025-01-09 16:08:39.601701+08

    Seperti yang ditunjukkan dalam hasil, kolom update_time diperbarui secara otomatis.