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

पोस्टग्रेज 8.4 . में प्रत्येक पंक्ति के लिए एक बार कॉल किए गए फ़ंक्शन के साथ अपडेट करें

क्या आपने पोस्टग्रेज के गैर-मानक UPDATE .. FROM . की कोशिश की है खंड? मुझे लगता है, यह काम करेगा

update mytable
   set a = first_part(gen.id),
       b = second_part(gen.id),
       c = third_path(gen.id)
  from (
          select genid() as genid, id
          from mytable 
          where package_id = 10
       ) gen
 where mytable.id = gen.id;
 --and package_id = 10 -- This predicate is no longer necessary as the subquery
                       -- already filters on package_id, as Erwin mentioned

ध्यान दें कि मैं मजबूर कर रहा हूं genid() mytable . में प्रति रिकॉर्ड ठीक एक बार कॉल करने के लिए उप-चयन के भीतर। फिर मैं mytable से सेल्फ-जॉइन कर रहा हूं और gen एक काल्पनिक id . का उपयोग करना कॉलम। दस्तावेज़ यहाँ देखें:

http://www.postgresql.org/docs/current/interactive /sql-update.html

ऐसा लगता है कि इसे केवल Postgres 9.0 के साथ ही पेश किया गया है। यदि यह बहुत जटिल लगता है (अर्थात बहुत पठनीय नहीं), तो आप अभी भी pgplsql का उपयोग उपयोगकर्ता के रूप में कर सकते हैं फ़्लोरिन का सुझाव यहां दिया गया है



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या किसी देश का ग्रिड मैप बनाने के लिए PostGIS का उपयोग किया जा सकता है?

  2. PostgreSQL दिनांक और समय कार्य

  3. PostgreSQL:बाधा जो कई तालिकाओं को प्रभावित करती है

  4. PostgreSQL में एक तारीख से महीना निकालें

  5. Postgresql पर UUIDs के साथ रेल 5.2 ActiveStorage