Fungsi Anda dapat terlihat seperti ini di Postgres 9.0 atau yang lebih baru:
CREATE OR REPLACE FUNCTION dummytest_insert_trigger()
RETURNS trigger AS
$func$
DECLARE
v_partition_name text := quote_ident('dummyTest'); -- assign at declaration
BEGIN
IF NEW.datetime IS NOT NULL THEN
EXECUTE
'INSERT INTO ' || v_partition_name || ' VALUES ($1,$2)'
USING NEW.id, NEW.datetime;
END IF;
RETURN NULL; -- You sure about this?
END
$func$ LANGUAGE plpgsql;
Tentang RETURN NULL
:
- Untuk mengabaikan hasil SEBELUM PEMICU PostgreSQL?
Saya akan menyarankan untuk tidak menggunakan pengidentifikasi kasus campuran. Dengan format( .. %I ..)
atau quote_ident()
, Anda akan mendapatkan tabel bernama "dummyTest"
, yang harus Anda kutip dua kali selama sisa keberadaannya. Terkait:
- Apakah nama kolom PostgreSQL peka huruf besar/kecil?
Gunakan huruf kecil sebagai gantinya:
quote_ident('dummytest')
Tidak ada gunanya menggunakan SQL dinamis dengan EXECUTE
selama Anda memiliki nama tabel statis. Tapi itu mungkin hanya contoh yang disederhanakan?