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

एक नियम का उपयोग करके स्वचालित रूप से एक भौतिक दृश्य को ताज़ा करें या सूचित करें

table1 पर प्रत्येक कथन के लिए डालने/अपडेट/डिलीट/ट्रंकेट करने के बाद आपको ट्रिगर्स में दृश्य रीफ्रेश करना चाहिए और table2

create or replace function refresh_mat_view()
returns trigger language plpgsql
as $$
begin
    refresh materialized view mat_view;
    return null;
end $$;

create trigger refresh_mat_view
after insert or update or delete or truncate
on table1 for each statement 
execute procedure refresh_mat_view();

create trigger refresh_mat_view
after insert or update or delete or truncate
on table2 for each statement 
execute procedure refresh_mat_view();

इस तरह आपका भौतिक दृष्टिकोण हमेशा अद्यतित रहता है। इस सरल समाधान को बार-बार डालने/अपडेट और छिटपुट चयनों के साथ स्वीकार करना कठिन हो सकता है। आपके मामले में (शायद ही कभी दिन में दो बार बदलता है) यह आदर्श रूप से आपकी आवश्यकताओं के अनुरूप है।

आस्थगित रीफ़्रेश realize को साकार करने के लिए एक भौतिक दृश्य के लिए आपको निम्न में से किसी एक विशेषता की आवश्यकता है:

  • एसिंक्रोनस ट्रिगर
  • चुनने से पहले ट्रिगर करें
  • पहले चयन पर नियम

Postgres में उनमें से कोई भी नहीं है, इसलिए ऐसा लगता है कि कोई स्पष्ट . नहीं है पोस्टग्रेज समाधान।

इसे ध्यान में रखते हुए मैं mat_view पर चयन के लिए एक रैपर फ़ंक्शन पर विचार करूंगा, उदा।

CREATE OR REPLACE FUNCTION select_from_mat_view(where_clause text)
RETURNS SETOF mat_view AS $body$
BEGIN
  -- here is checking whether to refresh the mat_view
  -- then return the select:
  RETURN QUERY EXECUTE FORMAT ('SELECT * FROM mat_view %s', where_clause);
END;
$body$ LANGUAGE plpgsql;

यदि यह व्यवहार में स्वीकार्य है तो उन विवरणों पर निर्भर करता है जिनके बारे में मुझे जानकारी नहीं है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LIMIT/OFFSET के साथ एक क्वेरी चलाएँ और पंक्तियों की कुल संख्या भी प्राप्त करें

  2. PostgreSQL नेस्टेड JSON क्वेरी

  3. PostgreSQL के साथ डेटाबेस के बीच डेटा ट्रांसफर करें

  4. कोड कवरेज आँकड़े

  5. pyspark शेल में jdbc का उपयोग करके पोस्टग्रेज से कनेक्ट करने में सक्षम नहीं है