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

से हटाएं ... पर या उसके पास सिंटैक्स त्रुटि रिपोर्टिंग।

आपकी क्वेरी का कोई मतलब नहीं है।

DELETE FROM database_userprofile WHERE user.username = 'some';
                                       ^^^^

userकहां होगा से आते हैं? यह क्वेरी में संदर्भित नहीं है। क्या यह database_userprofile . का कॉलम है? ? अगर ऐसा है, तो आप user.username नहीं लिख सकते हैं (जब तक कि यह एक समग्र प्रकार न हो, उस स्थिति में आपको (user).username लिखना होगा। पार्सर को यह बताने के लिए कि; लेकिन मुझे संदेह है कि यह एक समग्र प्रकार है)।

इसका तात्कालिक कारण यह है कि user एक आरक्षित शब्द . है . आप उस नाम को उद्धृत किए बिना उसका उपयोग नहीं कर सकते:

DELETE FROM database_userprofile WHERE "user".username = 'some';

... हालांकि, इस क्वेरी का अभी भी कोई मतलब नहीं है, यह केवल एक अलग त्रुटि देगा:

regress=> DELETE FROM database_userprofile WHERE "user".username = 'some';
ERROR:  missing FROM-clause entry for table "user"
LINE 1: DELETE FROM database_userprofile WHERE "user".username = 'so...

मेरा जंगली अनुमान यह है कि आप शामिल होने पर हटाने का प्रयास कर रहे हैं। मुझे लगता है कि आपके पास टेबल हैं जैसे:

CREATE TABLE "user" (
    id serial primary key,
    username text not null,
    -- blah blah
);

CREATE TABLE database_userprofile (
     user_id integer references "user"(id),
     -- blah blah
);

और आप दूसरी तालिका में एक शर्त के साथ हटाने का प्रयास कर रहे हैं।

अगर ऐसा है, तो आप नहीं कर सकते हैं बस लिखें user.username . आपको अवश्य उपयोग करना चाहिए:

DELETE FROM database_userprofile
USING "user"
WHERE database_userprofile.user_id = "user".id
AND "user".username = 'fred';

आप देखेंगे कि मैंने "उपयोगकर्ता" को दोहरा-उद्धृत किया है। ऐसा इसलिए है क्योंकि यह एक कीवर्ड है और इसका उपयोग वास्तव में टेबल नामों या अन्य उपयोगकर्ता परिभाषित पहचानकर्ताओं के लिए नहीं किया जाना चाहिए। इसे दोहरा-उद्धृत करना इसे एक पहचानकर्ता के रूप में व्याख्या करने के लिए मजबूर करता है न कि एक कीवर्ड के रूप में।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgresConf US 2018 में दूसरा चतुर्थांश

  2. IF . पर या उसके पास सिंटैक्स त्रुटि पोस्टग्रेज करता है

  3. रेल अद्वितीय अनुक्रमणिका में क्या अंतर है और validates_uniqueness_of

  4. Postgresql में SQL सर्वर से 'सामान' और 'xml पथ के लिए ('')'

  5. Laravel 8 . में 3 या अधिक तालिकाओं में बाहरी जुड़ाव