mydatabase
स्कीमा . के लिए उल्लेखनीय रूप से दुर्भाग्यपूर्ण नाम है ।
ट्रिगर फ़ंक्शन इस तरह दिख सकता है:
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;
और प्रत्येक संबंधित तालिका पर ट्रिगर में उपयोग करने की आवश्यकता है (trip
. पर नहीं स्वयं):
CREATE TRIGGER upaft_upd_trip
AFTER UPDATE ON mydatabase.trip_detail
FOR EACH ROW EXECUTE PROCEDURE trg_upaft_upd_trip();
आपको INSERT
. को भी कवर करना होगा और DELETE
(और संभवतः COPY
) सभी उप-तालिकाओं पर ...
इस दृष्टिकोण में विफलता के कई संभावित बिंदु हैं। विकल्प के रूप में, एक प्रश्न या दृश्य पर विचार करें जो नवीनतम last_updated
. की गणना करता है उप-तालिकाओं से गतिशील रूप से। यदि आप अक्सर अपडेट करते हैं तो यह बेहतर तरीका हो सकता है।
यदि आप शायद ही कभी UPDATE
और SELECT
अक्सर, आपका पहला दृष्टिकोण भुगतान कर सकता है।