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

पोस्टग्रेएसक्यूएल अपडेट ट्रिगर

जैसा कि @SpartanElite ने बताया , आप एक अंतहीन लूप ट्रिगर कर रहे हैं।

ट्रिगर फ़ंक्शन को सरल बनाएं:

CREATE OR REPLACE FUNCTION set_angle()
  RETURNS TRIGGER AS
$func$
BEGIN
   NEW."rotationAngle" := degrees(
                             ST_Azimuth(
                                ST_StartPoint(NEW.the_geom)
                              , ST_EndPoint(NEW.the_geom)
                             )
                          ) - 90;
   RETURN NEW;
END
$func$ LANGUAGE plpgsql;
  • NEW को असाइन करें सीधे। नहीं WHERE इस मामले में।
  • आपको चाहिए डबल-कोट अवैध कॉलम नाम। शुरुआत में ऐसे नामों का उपयोग न करना ही बेहतर है।
    हाल संबंधित उत्तर।
  • इन्सर्ट और अपग्रेड के लिए कोड समान है। मैं एक कोड पथ में बदल गया।

BEFORE का उपयोग करें चालू कर देना। इस तरह आप ट्रिगरिंग पंक्ति के कॉलम को सीधे पहले . संपादित कर सकते हैं वे सहेजे गए हैं:

CREATE TRIGGER set_angle
BEFORE INSERT OR UPDATE ON annotations
FOR EACH ROW EXECUTE PROCEDURE set_angle();

हालांकि

अगर आप तालिका में केवल कार्यात्मक रूप से निर्भर मान को बनाए रखने की कोशिश कर रहे हैं (और कोई अन्य विचार नहीं हैं):नहीं . इसके बजाय किसी दृश्य या जेनरेट किए गए कॉलम का उपयोग करें:

तब आपको इसकी कोई आवश्यकता नहीं है।



  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 में एक बाइटा फ़ील्ड पर एक आकार सीमा (dbase के भीतर) सेट कर सकता हूं?

  2. लिक्विबेस में ऑटोइनक्रिकमेंट

  3. PostgreSQL माइग्रेशन के लिए शीर्ष ओपन सोर्स टूल्स

  4. EF Core GroupBy चुनिंदा डिस्टिंक्ट काउंट के साथ

  5. डेटाबेस से एक पंक्ति को हटाने में क्या समस्या है?