mydatabase
adalah nama yang sangat disayangkan untuk sebuah skema .
Fungsi pemicu dapat terlihat seperti ini:
CREATE OR REPLACE FUNCTION trg_upaft_upd_trip()
RETURNS TRIGGER AS
$func$
BEGIN
UPDATE mydatabase.trip t -- "mydatabase" = schema name (?!)
SET last_updated = now()
WHERE t.id = NEW.trip_id -- guessing column names
RETURN NULL; -- calling this AFTER UPDATE
END
$func$ LANGUAGE plpgsql;
Dan perlu digunakan dalam pemicu di setiap tabel terkait (bukan di trip
sendiri):
CREATE TRIGGER upaft_upd_trip
AFTER UPDATE ON mydatabase.trip_detail
FOR EACH ROW EXECUTE PROCEDURE trg_upaft_upd_trip();
Anda juga perlu menutupi INSERT
dan DELETE
(dan mungkin COPY
) pada semua sub-tabel ...
Pendekatan ini memiliki banyak titik kegagalan potensial. Sebagai alternatif, pertimbangkan kueri atau tampilan yang menghitung last_updated
terbaru dari sub-tabel secara dinamis. Jika Anda sering memperbarui, ini mungkin pendekatan yang lebih baik.
Jika Anda jarang UPDATE
dan SELECT
sering kali, pendekatan pertama Anda mungkin membuahkan hasil.