2012-06-05 22 views
19

मैं psql में ऐसा किया:पोस्टग्रेस टेबल कॉलम नाम प्रतिबंध?

CREATE TABLE IF NOT EXISTS apiss (skey TEXT, time INTEGER, user TEXT, ip TEXT); 

मैं

ERROR: syntax error at or near "user" LINE 1: ...BLE IF NOT EXISTS apiss (skey TEXT, time INTEGER, user TEXT,... 

मिल मुझे क्या करना:

CREATE TABLE IF NOT EXISTS apiss (skey TEXT, time INTEGER, userd TEXT, ip TEXT); 

यह काम करता है।
उपयोगकर्ता के बजाय उपयोगकर्ता को नोट करें।

क्या तालिका के नाम पर कॉलम नामों पर कुछ प्रतिबंध हैं ??
(PostgresSQL v9.1.3)

उत्तर

40

यहाँ PostgreSQL में आरक्षित शब्द का एक अच्छा तालिका है:
http://www.postgresql.org/docs/current/static/sql-keywords-appendix.html

यह शायद बस टेबल या स्तंभ-नाम के रूप में उन शब्दों की से बचने के लिए सबसे अच्छा है।
एक वैकल्पिक, तथापि, डबल उद्धरण में पहचानकर्ता, उदा .:

CREATE TABLE IF NOT EXISTS apiss (
    skey TEXT, 
    time INTEGER, 
    "user" TEXT, 
    ip TEXT); 
+34

योड को पैराफ्रेश करने के लिए कार्य को हल किया, "यदि आप उद्धृत पहचानकर्ताओं का उपयोग करते हैं, तो वे हमेशा आपके भाग्य पर हावी होंगे।" उद्धृत पहचानकर्ताओं का उपयोग करने के लिए सही दर्द होता है, विशेष रूप से गैर-उद्धृत के साथ मिश्रित। जैसा कि ओपी ने कहा, पूरी तरह से उनसे बचने के लिए सबसे अच्छा है। –

17

मेरी कंपनी में संलग्न करने के लिए है, मैं आरक्षित शब्द के लिए एक पूरे डेटाबेस को स्कैन करने के लिए किया था। मैंने

select * from pg_get_keywords() 
+0

विभिन्न संस्करणों के लिए अच्छा है – Rodrigo

संबंधित मुद्दे