Re: OID's
| От | Alexander M. Pravking |
|---|---|
| Тема | Re: OID's |
| Дата | |
| Msg-id | 20050121171200.GA75942@dyatel.antar.bryansk.ru обсуждение исходный текст |
| Ответ на | Re: OID's (Mihail Nasedkin <m.nasedkin.perm@mail.ru>) |
| Список | pgsql-ru-general |
On Fri, Jan 21, 2005 at 02:52:01PM +0500, Mihail Nasedkin wrote: > NG> Хрянятся в таблице, как еще один столбец. Узнать перед вставкой -- вряд > NG> ли, особенно в многопользовательской среде. > > Это понятно всем, но в какой системной таблице хранятся ВСЕ OID's, а > не только этой таблицы. Есть таблица "pg_catalog.pg_attribute" с полем > "attrelid", где хранятся все системные OID's, но нужны именно > пользовательские OID's. attrelid в данном случае - лишь ссылка на pg_catalog.pg_class.oid. ВСЕ системные таблицы имеют столбец oid, и именно это его основное назначение. > NG> А зачем все это? Я вот с радостью отключил OID по дефолту в 8.0, ибо > NG> надобность в них сомнительная. > Мое мнение в том, что система уникальности записи в пределах всех баз > данных конкретной инсталляции PostgreSQL независимо от принадлежности > к конкретной таблице является интересным для нестандартных решений в > приложениях. Конечно можно такую задачу решать каждому разработчику > своими силами и это реализовано в других SQL-серверах. > Однако, если уникальность уже реализована на системном уровне сервера - это большой > плюс PostgreSQL. Я всегда использую OID's. Чем не вариант - уникальность с помощью SEQUENCE, тоже на уровне сервера? Конечно, между базами уникальности не получится, а вот между всеми таблицами в базе - вполне. К тому же, если не ошибаюсь, oid - поле 32-битное, тогда как значение в SEQUENCE - 64-битное, что даёт бОльшую гарантию, что значение не переполнится на больших объёмах данных. И можно заранее достать значение, которое больше никем использовано не будет. -- Fduch M. Pravking
В списке pgsql-ru-general по дате отправления: