यह थोड़ा इतिहास के साथ एक ज्ञात भ्रमित "फीचर" है। विशेष रूप से, आप तालिका के नाम के साथ संपूर्ण रूप से तालिका से टुपल्स का उल्लेख कर सकते हैं, और फिर .name जोड़ सकते हैं name का आह्वान करेगा उन पर कार्य करें (अर्थात इसे select name(t) from t )।
PostgreSQL 9 के विकास में किसी बिंदु पर, Istr इसे थोड़ा साफ किया गया था। आप अभी भी select t from t पंक्तियों के रूप में टुपल्स प्रभाव प्राप्त करने के लिए स्पष्ट रूप से, लेकिन आप उसी तरह एक फ़ंक्शन लागू नहीं कर सकते हैं। तो PostgreSQL पर 8.4.9 , यह:
create table t(id serial primary key, value text not null);
insert into t(value) values('foo');
select t.name from t;
विचित्र पैदा करता है:
name
---------
(1,foo)
(1 row)
लेकिन 9.1.1 . को उत्पादन करता है:
ERROR: column t.name does not exist
LINE 1: select t.name from t;
^
जैसा आप उम्मीद करेंगे।
तो, विशेष रूप से आपके प्रश्न का उत्तर देने के लिए:name PostgreSQL में एक मानक प्रकार है (तालिका नामों आदि के लिए कैटलॉग में उपयोग किया जाता है) और चीजों को name में बदलने के लिए कुछ मानक फ़ंक्शन भी हैं। प्रकार। यह वास्तव में आरक्षित नहीं है, बस मौजूद वस्तुओं को कहा जाता है, साथ ही कुछ ऐतिहासिक अजीब वाक्य रचना ने चीजों को भ्रमित कर दिया है; और यह हाल के संस्करणों में डेवलपर्स द्वारा तय किया गया है।