Здравствуйте.
Спасибо Nick за ответ от 21 января 2005 г., 14:25:49 на мой вопрос:
>> У меня вопрос относительно автоматической колонки oid, которая
>> создается, если не отказаться специально (WITHOUT OID).
>>
>> Хотелось бы знать, может где-то хранятся все OID или как узнать перед
>> вставкой данных в таблицу, который OID будет использован.
NG> Хрянятся в таблице, как еще один столбец. Узнать перед вставкой -- вряд
NG> ли, особенно в многопользовательской среде.
Это понятно всем, но в какой системной таблице хранятся ВСЕ OID's, а
не только этой таблицы. Есть таблица "pg_catalog.pg_attribute" с полем
"attrelid", где хранятся все системные OID's, но нужны именно
пользовательские OID's.
NG> А зачем все это? Я вот с радостью отключил OID по дефолту в 8.0, ибо
NG> надобность в них сомнительная.
Мое мнение в том, что система уникальности записи в пределах всех баз
данных конкретной инсталляции PostgreSQL независимо от принадлежности
к конкретной таблице является интересным для нестандартных решений в
приложениях. Конечно можно такую задачу решать каждому разработчику
своими силами и это реализовано в других SQL-серверах.
Однако, если уникальность уже реализована на системном уровне сервера - это большой
плюс PostgreSQL. Я всегда использую OID's.
В моем случае задача в том, чтобы использовать все пользовательские OID's в
некотором запросе с LEFT JOIN. Использовать UNION категорически
против. Система скрозной OID является своего рода осью на которую
можно "нанизать" нужные записи нужных таблиц. Для чего? Продолжение
при интересе :)
--
С уважением,
Mihail Наседкин mailto:m.nasedkin.perm@mail.ru