आपका update_tbl_point
फ़ंक्शन शायद कुछ ऐसा कर रहा है:
new.last_update = current_timestamp;
लेकिन यह new."Last_Update"
. का उपयोग करना चाहिए इसलिए अपने ट्रिगर फ़ंक्शन को ठीक करें।
पोस्टग्रेएसक्यूएल में कॉलम नामों को लोअर केस के लिए सामान्यीकृत किया जाता है (एसक्यूएल मानक के विपरीत जो आपको दिमाग में रखता है) लेकिन डबल कोटेड पहचानकर्ता अपना मामला बनाए रखते हैं:
<ब्लॉकक्वॉट>एक पहचानकर्ता को उद्धृत करना भी इसे केस-संवेदी बनाता है, जबकि गैर-उद्धृत नाम हमेशा लोअर केस में जोड़ दिए जाते हैं। उदाहरण के लिए, पहचानकर्ता FOO, foo, और "foo" को PostgreSQL द्वारा समान माना जाता है, लेकिन "Foo" और "FOO" इन तीनों और एक दूसरे से भिन्न हैं। (पोस्टग्रेएसक्यूएल में गैर-उद्धृत नामों को लोअर केस में फोल्ड करना SQL मानक के साथ असंगत है, जो कहता है कि गैर-उद्धृत नामों को अपर केस में फोल्ड किया जाना चाहिए। इस प्रकार, फू को मानक के अनुसार "फू" नहीं "फू" के बराबर होना चाहिए। यदि आप पोर्टेबल एप्लिकेशन लिखना चाहते हैं, आपको सलाह दी जाती है कि आप हमेशा किसी विशेष नाम को उद्धृत करें या इसे कभी भी उद्धृत न करें।)
तो, अगर आप ऐसा करते हैं:
create table pancakes (
Eggs integer not null
)
तो आप इनमें से कुछ भी कर सकते हैं:
update pancakes set eggs = 11;
update pancakes set Eggs = 11;
update pancakes set EGGS = 11;
और यह काम करेगा क्योंकि सभी तीन रूपों को eggs
. के लिए सामान्यीकृत किया जाता है . हालांकि, अगर आप ऐसा करते हैं:
create table pancakes (
"Eggs" integer not null
)
तो आप यह कर सकते हैं:
update pancakes set "Eggs" = 11;
लेकिन यह नहीं:
update pancakes set eggs = 11;
PostgreSQL के साथ सामान्य अभ्यास हर जगह लोअर केस आइडेंटिफ़ायर का उपयोग करना है ताकि आपको इसके बारे में चिंता करने की आवश्यकता न हो। मैं अन्य डेटाबेस में भी उसी नामकरण योजना की सिफारिश करता हूं, सब कुछ उद्धृत करने के लिए आपको अपने एसक्यूएल में डबल कोट्स (मानक), बैकटिक्स (MySQL), और ब्रैकेट (एसक्यूएल सर्वर) की गड़बड़ी के साथ छोड़ देता है और यह नहीं होगा आप को कोई दोस्त बनाएं।