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

एक विशिष्ट कॉलम के अपडेट के बाद PostgreSQL ट्रिगर

सिंटैक्स होगा:

CREATE TRIGGER tr_total_games 
AFTER UPDATE OF game_saved ON game_info
FOR EACH ROW 
EXECUTE PROCEDURE total_games();

(जैसा कि मैनुअल में प्रलेखित है।)

लेकिन पूरा तरीका संदिग्ध है। ट्रिगर के माध्यम से समुच्चय को अद्यतित रखना समवर्ती लेखन भार के तहत त्रुटियों की संभावना है।

और समवर्ती लेखन भार के बिना, सरल समाधान हैं:वर्तमान कुल में से केवल 1 जोड़ें / घटाएं ...

एक VIEW एक विश्वसनीय विकल्प होगा। कॉलम निकालें game_collection.total_game_count पूरी तरह से - और शायद पूरी तालिका game_collection , जिसका कोई अन्य उद्देश्य नहीं लगता। एक VIEW बनाएं इसके बजाय:

CREATE VIEW v_game_collection AS
SELECT user_id, count(*) AS total_game_count
FROM   game_info
WHERE  game_saved
GROUP  BY user_id;

यह game_info . में कम से कम 1 पंक्ति वाले सभी उपयोगकर्ताओं को लौटाता है जहां game_saved IS TRUE . है (और अन्य सभी को छोड़ देता है)।

बहुत बड़ी तालिकाओं के लिए आप एक MATERIALIZED VIEW चाह सकते हैं। या पढ़ने के प्रदर्शन को बेहतर बनाने के लिए संबंधित समाधान।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Atomikos:PostgreSQL का उपयोग करते समय डेटा सहेजा नहीं जा रहा है

  2. रेल 3.2.* और पोस्टग्रेज़ का उपयोग करके स्ट्रिंग बनाम टेक्स्ट - क्या मुझे हमेशा टेक्स्ट का उपयोग करना चाहिए?

  3. प्रत्येक से एक कॉलम का उपयोग करके दो तालिका कार्यों के परिणाम की तुलना करें

  4. PostgreSQL के लिए ट्यूनिंग इनपुट/आउटपुट (I/O) संचालन

  5. मुझे पिछली बार कैसे पता चलेगा कि PostgreSQL डेटाबेस को अपडेट किया गया है?