------------ Дoбавленo в 15.39:
Если быть более точным то rowid вошел в SQlite из Oracl-a, так что насчет фичи именно SQlite я погорячился. Но вот в стандарте я его не нашел, как не нашел и запроса REPLACE
------------ Дoбавленo в 15.43:
Вот, кстати, описание rowid от Qracle
5.2 Псевдостолбец ROWID
Псевдостолбцами в Oracle принято называть столбцы, которые отсутствуют в таблицах в явном виде, но могут быть использованы в запросах.
Наиболее употребимым и важным из них является ROWID — псевдостолбец, являющийся уникальным идентификатором строки. Он не просто гарантированно уникален в рамках таблицы — более того: он уникален в рамках базы данных. С физической точки зрения ROWID является своеобразной координатой записи в базе.
Необходимо отметить, что существование ROWID противоречит как минимум двум из двенадцати известных правил Кодда, описывающих требования к реляционной СУБД. Во-первых, ROWID нарушает правило номер 2, которое гласит: «К каждому элементу данных должен быть обеспечен доступ при помощи комбинации имени таблицы, первичного ключа строки и имени столбца». В данном случае ROWID не является первичным ключом, хотя ввиду его уникальности для каждой строки он может выступать в роли первичного ключа.
Во-вторых, нарушается правило Кодда номер 8: «Прикладные программы не должны зависеть от используемых способов хранения данных на носителях и методов обращения к ним». Нарушение этого правила происходит из-за того, что ROWID по своей сути является физической координатой записи, поэтому он будет изменяться в случае пересоздания таблицы, перезагрузки данных, перемещения таблицы из одного табличного пространства в другое и т.п. Однако ROWID уникален и неизменен в течение сеанса пользователя, поэтому приложение может считать его неизменным.
ROWID существенно упрощает работу с базой данных, поскольку позволяет однозначно идентифицировать любую строку таблицы, что, в частности, позволяет удалять и редактировать строки таблиц без первичного ключа. Кроме того, поиск строки по ее ROWID является самым быстрым из возможных, что положительно сказывается на быстродействии приложений, активно модифицирующих данные. Однако ROWID является специфической особенностью Oracle, а следовательно, его нельзя применять при разработке приложений, рассчитанных на работу с базами других типов.
Рассмотрим простейший пример запроса, извлекающего ROWID строк:
SELECT ROWID, Name FROM ARTIST;
Псевдостолбцами в Oracle принято называть столбцы, которые отсутствуют в таблицах в явном виде, но могут быть использованы в запросах.
Наиболее употребимым и важным из них является ROWID — псевдостолбец, являющийся уникальным идентификатором строки. Он не просто гарантированно уникален в рамках таблицы — более того: он уникален в рамках базы данных. С физической точки зрения ROWID является своеобразной координатой записи в базе.
Необходимо отметить, что существование ROWID противоречит как минимум двум из двенадцати известных правил Кодда, описывающих требования к реляционной СУБД. Во-первых, ROWID нарушает правило номер 2, которое гласит: «К каждому элементу данных должен быть обеспечен доступ при помощи комбинации имени таблицы, первичного ключа строки и имени столбца». В данном случае ROWID не является первичным ключом, хотя ввиду его уникальности для каждой строки он может выступать в роли первичного ключа.
Во-вторых, нарушается правило Кодда номер 8: «Прикладные программы не должны зависеть от используемых способов хранения данных на носителях и методов обращения к ним». Нарушение этого правила происходит из-за того, что ROWID по своей сути является физической координатой записи, поэтому он будет изменяться в случае пересоздания таблицы, перезагрузки данных, перемещения таблицы из одного табличного пространства в другое и т.п. Однако ROWID уникален и неизменен в течение сеанса пользователя, поэтому приложение может считать его неизменным.
ROWID существенно упрощает работу с базой данных, поскольку позволяет однозначно идентифицировать любую строку таблицы, что, в частности, позволяет удалять и редактировать строки таблиц без первичного ключа. Кроме того, поиск строки по ее ROWID является самым быстрым из возможных, что положительно сказывается на быстродействии приложений, активно модифицирующих данные. Однако ROWID является специфической особенностью Oracle, а следовательно, его нельзя применять при разработке приложений, рассчитанных на работу с базами других типов.
Рассмотрим простейший пример запроса, извлекающего ROWID строк:
SELECT ROWID, Name FROM ARTIST;
Кстати, очень интересны два описанных противоречия. Откуда можно сделать вывод, что использование его для стандартизации запросов к разным базам недопустим. Об этом как-то давно и писалось у нас на форуме. Ты широко поддерживал rowid, а Dilma категорически был против его использования, теперь ясно почему