Saya memiliki fungsi pemicu yang dipanggil oleh beberapa tabel ketika KOLOM A diperbarui, sehingga KOLOM B dapat diperbarui berdasarkan nilai dari fungsi yang berbeda. (Lebih rumit untuk dijelaskan daripada yang sebenarnya). Fungsi trigger menggunakan col_a dan col_b karena keduanya berbeda untuk tabel yang berbeda.
IF needs_updated THEN
sql = format('($1).%2$s = dbo.foo(($1).%1$s); ', col_a, col_b);
EXECUTE sql USING NEW;
END IF;
Ketika saya mencoba menjalankan yang di atas, formatnya menghasilkan sql ini:
($1).NameText = dbo.foo(($1).Name);
Ketika saya menjalankan SQL dengan USING saya mengharapkan sesuatu seperti ini terjadi (yang berfungsi ketika dieksekusi langsung tanpa sql dinamis):
NEW.NameText = dbo.foo(NEW.Name);
Sebaliknya saya mendapatkan:
[42601] ERROR: kesalahan sintaksis pada atau di dekat "$1"
Bagaimana cara memperbarui kolom secara dinamis pada tipe rekaman/komposit BARU?