ROWID и RECID - PullRequest
       33

ROWID и RECID

3 голосов
/ 18 февраля 2009

Что такое ROWID и RECID на самом деле в процессе. Можем ли мы использовать RECID вместо ROWID. Какая разница между ними ??

Ответы [ 2 ]

9 голосов
/ 05 мая 2009

Оба RECID и ROWID являются уникальными указателями на конкретную запись в базе данных.

Оба являются более или менее физическими указателями на саму базу данных, за исключением таблиц, не относящихся к OpenEdge, где нет эквивалента на базовой платформе. В этих случаях он может состоять из значений, составляющих первичный ключ.

RECID - это 32-разрядные целые числа до 10,1A, и они были хороши, когда база данных была базой данных OpenEdge и имела только одну область. Начиная с версии 10.1B они были обновлены до 64-битных целых чисел.

В версии v6 была добавлена ​​возможность подключения к базам данных, отличных от OpenEdge, а в версии v8 - для создания баз данных OpenEdge из нескольких областей хранения. В этот момент идентификаторов RECID было недостаточно для уникального обращения ко всем записям в таблице при любых обстоятельствах.

Так появилась структура ROWID. Его фактическая архитектура зависит от типа базы данных, но не страдает от ограничений целочисленного типа.

Документация довольно ясно гласит , что RECID не должны использоваться в дальнейшем , за исключением кода, который манипулирует метасхемой базы данных OpenEdge.

2 голосов
/ 27 февраля 2009

RECID устарела, для пары версий сейчас. ROWID является заменой для него. Я понимаю, что на самом деле он возвращает физический адрес блока БД, содержащего вашу запись. Исходя из памяти, они представили ROWID, когда хотели поддерживать разные механизмы БД - Oracle / SQL server и др. - из 4GL, что подразумевает, что в ROWID больше, чем RECID.

Я бы держался подальше от RECID, вы можете сойти с рук в краткосрочной перспективе, но у вас есть потенциальная проблема, которую вы могли бы избежать в целом.

...