PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

मैं किसी अन्य तालिका में कॉलम को अपडेट करने के लिए ट्रिगर कैसे बना सकता हूं?

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 अक्सर, आपका पहला दृष्टिकोण भुगतान कर सकता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL:सभी विदेशी कुंजियों को कैसे अनुक्रमित करें?

  2. रेल में LOWER (users.username) पर इंडेक्स कैसे बनाएं (पोस्टग्रेज का उपयोग करके)

  3. संग्रहीत प्रक्रिया को कैसे कॉल करें और स्लिक में वापसी मूल्य प्राप्त करें (स्कैला का उपयोग करके)

  4. एक सरणी का Nth तत्व प्राप्त करें जो string_to_array () फ़ंक्शन से लौटाता है

  5. समय समग्र कार्य में अतिव्यापी अवधियों को बाहर करें