mydatabase
là một cái tên đáng tiếc cho một lược đồ .
Hàm kích hoạt có thể trông giống như sau:
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;
Và cần được sử dụng trong trình kích hoạt trên mọi bảng có liên quan (không phải trên trip
chính nó):
CREATE TRIGGER upaft_upd_trip
AFTER UPDATE ON mydatabase.trip_detail
FOR EACH ROW EXECUTE PROCEDURE trg_upaft_upd_trip();
Bạn cũng cần bao gồm INSERT
và DELETE
(và có thể là COPY
) trên tất cả các bảng phụ ...
Cách làm này tiềm ẩn nhiều điểm thất bại. Thay vào đó, hãy xem xét một truy vấn hoặc chế độ xem tính toán last_updated
mới nhất từ các bảng phụ động. Nếu bạn cập nhật thường xuyên, đây có thể là cách tiếp cận ưu việt.
Nếu bạn hiếm khi UPDATE
và SELECT
thường thì cách tiếp cận đầu tiên của bạn có thể trả tiền.