मेरे पास pano_raw नामक एक टेबल है जिसमें 3 कॉलम अक्षांश, एलएनजी, और लैटलांग है।
lat और एलएनजी सिर्फ दशमलव (10,3) और लेट्लेंग एक स्थानिक सूचकांक प्रकार POINT है।
यह एक ऐसा उदाहरण बयान है जो अक्षांश और एलएजी के आधार पर डेटाबेस को अपडेट करेगा।
< कोड> pano_raw (latlng) मूल्यों में INSERT (GeomFromText ('POINT (-72.34 32.45)'));मैं ऊपर दिए गए बयान के आधार पर एक ट्रिगर तैयार करने का प्रयास कर रहा हूं, जो स्वत: अपडेट हो जाएगा जब मैं एलटी और एलएनजी को अलग से अपडेट कर दूंगा। क्वेरी के विशिष्ट होने के बाद से एसक्यूएल के साथ हर बार स्थानिक डेटा कॉलम को अद्यतन करने में यह एक दर्द है। ट्रिगर (सिद्धांत में) लिखना बहुत आसान होता है जो अद्यतन होगा जब मैं तालिका में एक साधारण दशमलव मान लिखूंगा।
मुझे जो समस्या है वह वाक्य रचना के साथ है I यह मेरा सबसे अच्छा (2 घंटे का शॉट है)।
SET @sql: = CONCAT ('POINT (', pano_raw.lng, ', pano_raw.lat,') '); प्रत्येक पंक्ति के लिए pano_raw पर INR से पहले ट्राइगर trig_pano_raw बनाएं SET pano_raw.latlng = GeomFromText (@sql)); समाप्त; प्रत्येक पंक्ति के लिए pano_raw पर सेटअप से पहले ट्राइगर trig_pano_raw बनाएं SET pano_raw.latlng = GeomFromText (@sql)); समाप्त;
मैं यह काम करने में मदद करने के लिए वास्तव में सराहना करूंगा।
यह काम नहीं कर रहा है?
ट्रिगर बनाएं trig_pano_raw पहले प्रत्येक पंक्ति के लिए pano_raw पर शुरू करें SET NEW.latlng = PointFromWKB (POINT (NEW.lat, NEW.lng)); समाप्त; Li>
2, आप इस बात की जांच कर सकते हैं कि किस फील्ड को अपडेट किया गया है, जैसे:
अपडेट ट्रिगर
DELIMITER $$ ट्रागर बनाएं trig_update_pano_row पहले प्रत्येक पंक्ति के लिए pano_raw पर अदला-बदली करें (यदि नई .lat! = OLD.lat) या (NEW.lng! = OLD.lng)) तब सेट NEW.latlng = PointFromWKB (POINT (NEW.lat, NEW .lng)); ELSEIF (NEW.latlng! = OLD.latlng) तब से प्रारंभ करें NEW.lat = X (NEW.latlng); SET NEW.lng = Y (NEW.latlng); समाप्त; अगर अंत; END; $$ DELIMITER;
Comments
Post a Comment