Re: Table creation

Поиск
Список
Период
Сортировка
От Craig Ringer
Тема Re: Table creation
Дата
Msg-id 4B00C0B7.2060406@postnewspapers.com.au
обсуждение исходный текст
Ответ на Table creation  (ikorot@earthlink.net)
Список pgsql-odbc
On 16/11/2009 10:08 AM, ikorot@earthlink.net wrote:
> Hi, ALL,
> I'm new to this list and to PostgreSQL. However, I am
> a C++ developer with some ODBC development experience.
>
> I heard that in PostgreSQL it is possible to create table
> in 2 ways:
>
> CREATE TABLE "Foo" ....;
>
> CREATE TABLE Foo... ;
>
> So, when using unquoted version all query should check for
> the case sensitivity.
>
> Is it possible to check how the table was created to use proper
> query syntax?

If the unquoted form was used, the table name will have been downcased
by PostgreSQL. It's still case sensitive, just forced to lower case.
Essentially,

  CREATE TABLE Foo ... ;

is exactly equivalent to:

  CREATE TABLE "foo" ... ;

in terms of its effects after the CREATE statement has executed. So, if
you expect to have any non-lower-case identifiers (table names, index
names, constraint names, etc) in your database, ALWAYS quote your
identifiers. If they're all lower case, it'll still work.

The only problem that'll arise is if your application is told by some
external source to access table "Foo" but doesn't know if the external
source created it as "Foo" or "foo". In that case, you can either query
INFORMATION_SCHEMA with a case-insensitive search to find the table
(which is slow and ugly) or just fix your app to be consistent about
quoting and case.

--
Craig Ringer

В списке pgsql-odbc по дате отправления:

Предыдущее
От: ikorot@earthlink.net
Дата:
Сообщение: Table creation
Следующее
От: ikorot@earthlink.net
Дата:
Сообщение: Re: Table creation