среда, 16 февраля 2011 г.

Типы данных ROWID и UROWID


О PL/SQL я писал уже довольно давно – еще в самом начале февраля (6 февраля) – вот решил сегодня продолжить это дело. Сегодня пойдет речь, опять таки, о типах данных. Вроде бы даже я сегодня рассмотрю последние из символьных типов данных – ROWID и UROWID. Подумаю на днях о том, что именно изучать из типов данных PL/SQL в следующий раз. Хотя – и к циклам уже пора бы переходить, а то затянул я с типами данных.

На секунду отвлекусь – задам вопрос, как вы лечите болезни внутри рта, например – десны? Я тоже недавно заинтересовался этим вопросом. Поискал в интернете медицинские сайты (с уклоном на зубы и полость рта). Нашел то, что искал, цены на лечение десен там вполне даже приемлемые, так что если надо – заходите.

Как я уже сказал, сегодня рассмотрю типы данных ROWID и UROWID, оба этих типа данных предназначены для работы с идентификаторами строк баз данных.

ROWID – это идентификатор строки (ROW IDENTIFIER), а точнее – двоичное значение, идентифицирующее строку данных в таблице ORACLE. В некоторых случаях его применение в инструкциях UPDATE и DELETE позволяет повысить скорость обработки, поскольку доступ к строке по ее идентификатору выполняется быстрее, чем по первичному ключу (правда, лучше эту возможность использовать на больших объемах информации).

В истории ORACEL ROWID был одним из первых типов данных, предназначенных для идентификации строк таблиц. По мере добавления новых функциональных возможностей, таких как использование индекс-таблиц и типов данных для межсетевых шлюзов, компания ORACLE, естественно, разрабатывала и новые типы идентификаторов строк и новые типы данных для их хранения. Так появился тип данных UROWID, используемый для хранения идентификаторов строк таблиц любого типа. Буква U в его назывании означает «UNIVERSAL» - универсальный.

Идентификатор строки – это создаваемое ORACLE двоичное значение, однозначно определяющее физический адрес каждой конкретной строки в таблице. Оно генерируется, когда строка добавляется в таблицу. Изменить это значение невозможно, его можно только считать с помощью инструкции SELECT, если указать в ней псевдостолбец ROWID (псевдостолбец потому, что в таблице такого столбца нет).

Чтобы увидеть то, как выглядит вообще значения идентификаторов строк, используйте нижеприведенный код:

SELECT t.*, t.rowid FROM dual t

Идентификаторы строк не поддерживаются стандартом ANSI SQL. Эти идентификаторы лишь отражают внутреннюю структуру в СУБД ORACLE.

Комментариев нет:

Отправить комментарий