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.
CatatanUntuk 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
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+08Perbarui 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+08Seperti yang ditunjukkan dalam hasil, kolom waktu (update_time) tidak diperbarui.
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}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+08Seperti yang ditunjukkan dalam hasil, kolom update_time diperbarui secara otomatis.