Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
Добрый день всем! Господа, такой вопрос, в каких базах данных используется такое понятие, как ROWID (На примере оракла)? В каких ещё? (я так понимаю, что не во всех). Как называется то же самое в других СУБД? Извините за несколько некорректный вопрос, но смысл, я думаю, понятен... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 12:53 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
Да не очень то понятен - а какой смысл вкладываете вы в него? -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 13:54 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
ROWID в Oracle внутренний идентификатор записи, что то типа "прямого адреса" в системе, - ( Id файла, Id блока, номер записи в блоке). Как раз он является ссылкой на запись в листьях индекса. В древние времена не мянялся за время жизни записи, с появлением Index Organized Tables и Partitioned Tables потерял своё постоянство для них ( в первом случае является функцией от ключа, во втором может измениться при миграции записи из секции в секцию), в 10G вроде появился еще вид таблиц где ROWID может меняться. Доступен в SQL-выражениях в виде псевдостолбца ROWID таблицы, требует осторожности при использовании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 14:09 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
Да-да, про назначение ROWID в оракле я представления имею. Меня интересует как обстоят дела с этим в других СУБД. MS SQL Server, Interbase, Sybase, MySQL, настольные СУБД типа Access. Там тоже такой псевдостолбец используется? И обращиться к нему также - ROWID? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 14:56 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
В Interbase это называется rdb$db_key. Длина 8 байт для таблицы. Причем увидеть его нельзя, select не выдаст :) А вот использовать для поиска можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 15:36 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
2 SOMNAMBULA Дык в каких целях тебе надо? Если идентификатор строки, тогда: В MS SQL - identity В Interbase - нет вообще, надо руками присваивать, есть для этого спец. вещь - Последовательность -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 15:49 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
В Interbase - нет вообще, надо руками присваивать, есть для этого спец. вещь - Последовательность М.б. ты имел ввиду генераторы. В Interbase это называется rdb$db_key. Кстати, значение теперь тоже может менятся. Так что его использование потеряло смысл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 16:10 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
в Access и MS SQL такого нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 16:24 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
Для чего мне это надо? ... Меня недавно спросили о существовании механизма скрытой идентификации записи в таблицах базы данных, вот я и про ROWID рассказал (сам работаю с ораклом), и при этом не подумал, что в других СУБД может другой механизм применяться. Вот теперь заинтересовался этим, можно считать, что для общего развития... Так что получается - если в словаре DDL конкретной СУБД есть что-то типа "create index...", то можно говорить о наличии механизма такой идентификации (типа ROWID в оракл)? Ой, что-то меня торкнуло на эту тему. Может кто подскажет энциклопедический источник по этому поводу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 16:25 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
Тогда я чего-то не понял Скрытая идентификация записи в таблице есть, конечно, везде. А вот наружу она выставляется далеко не всегда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 16:57 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
MSSQL - нет PostrgeSQL - стобец OID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 17:49 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
авторВ Interbase это называется rdb$db_key. Кстати, значение теперь тоже может менятся . Так что его использование потеряло смысл. Чушь. rdb$db_key сменится только в случае рестора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 17:52 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
В Informix-е скрытое поле rowid также есть во всех таблицах, правда если таблицы созданы с фрагментацией по умолчанию оно не создается, необходимо дополнительно просить сервер об этом (WITH ROWID). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 19:02 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
SQLite: ROWID, _ROWID_, OID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2004, 09:40 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
rdb$db_key сменится только в случае рестора. Я см. в http://www.ibase.ru/v6/ib6faq.htm#dbkey. Да наверное во время одного сеанса вполне можно использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2004, 11:30 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
авторТак что получается - если в словаре DDL конкретной СУБД есть что-то типа "create index...", то можно говорить о наличии механизма такой идентификации (типа ROWID в оракл)? Это как это так ты связал две разные вещи??? -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2004, 13:00 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
Это как это так ты связал две разные вещи??? О сказал! Неиначе начал тяпницу отмечать:-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2004, 15:55 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
Да. Еще со вторника -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2004, 16:53 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
авторв Access и MS SQL такого нет В MS SQL есть даже лучше, чем в oracle-овский ROWID. поле типа uniqueidentifier . Вот уж это значение точно не изменится. А ROWID в последних версиях Oracle может "плавать". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 20:27 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
ROWID не поле !!! В таблице оно не хранится ! (За исключением некоторых технических моментов, не имеющих отношения к ЛОГИКЕ хранения) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 07:43 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
Если уж проводить аналогии, то это скорее номер записи в понятиях DBF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 07:44 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
LeonidВ MS SQL есть даже лучше, чем в oracle-овский ROWID. поле типа uniqueidentifier. Вот уж это значение точно не изменится. А ROWID в последних версиях Oracle может "плавать". Если не знаешь что такое ROWID, то не путай других незнающих... ROWID мог плавать во всех версиях Oralce, и сравнение его c uniqueidentifier аналогично сравнению телевизора с холодильником. У них разное функциональное назначение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 08:26 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
ZaxxЕсли не знаешь что такое ROWID, то не путай других незнающих... ROWID мог плавать во всех версиях Oralce, и сравнение его c uniqueidentifier аналогично сравнению телевизора с холодильником. У них разное функциональное назначение. Уважаемый Zaxx, я знаю, что такое ROWID и как он формируется. Могу даже точную документацию процетировать. Я говорю о тех задачах, которые на него можно было бы "повесить". А именно уникальный идентификатор записи. uniqueidentifier - это не ROWID, но задачу уникальной идентификации он решает куда лучше. Можно даже сказать, что это уникальный идентификатор в рамках планеты. Вероятность его повторения мала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 11:56 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
тогда надеюсь вы заметили что в той самой документации как оракл настойчиво предупреждает о невозможности использовать rowid как уникальный идентификатор записи ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 12:54 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
Leonid Уважаемый Zaxx, я знаю, что такое ROWID и как он формируется. Не похоже, иначе не было-бы фразы про то-что "ROWID в последних версиях Oracle может "плавать"". Leonid uniqueidentifier - это не ROWID, но задачу уникальной идентификации он решает куда лучше. Я повторюсь: вы сравниваете телевизор с холодильником. ROWID вообще не решает задачу уникальной идентификации. Leonid Я говорю о тех задачах, которые на него можно было бы "повесить". А именно уникальный идентификатор записи. Вы пытаетесь повесить на него задачи, которые он не может выполнять. Задачу уникальной идентификации в Oracle выполняют sequens-ы (причём более гибко и удобно чем identity в M$SQL). Если вам так нравиться uniqueidentifier, и вы так сожалеете что этого типа данных нет в Oracle, то заведите поле Char(32) и генерите в него GUID функцией sys_guid(), хоть на сервере (что будет вам привычнее), хоть на клиенте (что будет всем удобнее). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 14:21 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
Вдогонку: хранить GUID правилнее даже не в CHAR(32) а в RAW(16). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 14:28 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
ZaxxНе похоже, иначе не было-бы фразы про то-что "ROWID в последних версиях Oracle может "плавать"". Уважаемый Zaxx, Вы что не согласны с Ежиком? Я и ёжикВ древние времена не мянялся за время жизни записи, с появлением Index Organized Tables и Partitioned Tables потерял своё постоянство для них ZaxxЯ повторюсь: вы сравниваете телевизор с холодильником. ROWID вообще не решает задачу уникальной идентификации. Не спорю, но только то, что раньше, в принципе можно было решить при помощи "телевизора" на Oracle, теперь, вообще, не решается, а точнее решается как вы сказали (запихиванием GUID вручную), а "холодильника" нет. ZaxxВы пытаетесь повесить на него задачи, которые он не может выполнять. Задачу уникальной идентификации в Oracle выполняют sequens-ы (причём более гибко и удобно чем identity в M$SQL). Кто спорит-то? Только sequenCe (пишется через "c") и identity призваны в основном для другого - для primary key. Нет теоретически, для уникальности записей в рамках одной БД подойдет и sequence (identity уж точно не подойдет), но в рамках нескольких БД (хоть до уровня планеты) uniqueidentifier с этим еще лучше справится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 15:29 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
LeonidВ древние времена не мянялся за время жизни записи В древние времена можно было пересоздать таблицу или сделать Exp/Imp и ROWID записей менялся. Поэтому никому никогда не приходило в голову использовать ROWID так как вы предлагаете. Leonidчто раньше, в принципе можно было решить при помощи "телевизора" на Oracle Да не использовали никогда ROWID для этих целей. НИКОГДА. После восстановления базы из дампа ROWID неизбежно МЕНЯЛИСЬ. ВСЕГДА!!! Leonidвообще, не решается, а точнее решается как вы сказали (запихиванием GUID вручную) Чем по вашему отличается система с триггером (из 3 строк) который будет засовывать GUID в поле от поля с типом GUID в M$SQL ??? Триггер это "запихивание GUID вручную" ??? LeonidТолько sequenCe (пишется через "c") В данном случае не важно, не на диктанте сидим... Leonididentity призваны в основном для другого - для primary key Почему для другого ??? А чем вам GUID не primary key ??? Leonidрамках нескольких БД uniqueidentifier с этим еще лучше справится Ну в рамках нескольких БД - ROWID вам тоже не поможет. А можно и на sequence выйти из положения, добавив идентификатор БД к номеру который выдаёт sequence. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 17:09 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
ZaxxЧем по вашему отличается система с триггером (из 3 строк) который будет засовывать GUID в поле от поля с типом GUID в M$SQL ??? Триггер это "запихивание GUID вручную" ??? Хорошо Zaxx, возможно, я не так сведущ в PL/SQL как вы. Скажите мне как в Oracle-овском тригере на PL/SQL, без использования внешних процедур и Java взять GUID и тогда разойдемся друзьями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 17:56 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
Так ведь Zaxx уже упомянул в самом конце сообщения:\r \r Oracle9i SQL Reference\r 6 Functions\r SYS_GUID\r http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96540/functions125a.htm#7919 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 18:31 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
Разойдёмся :) : create or replace trigger before insert on xxxtable for each row begin if :new.giud is null then :new.giud_column:=SYS_GUID(); end if; end; --В принципе, хватило-бы строчки :new.giud_column:=SYS_GUID(), но вдруг вам захочется иногда и с клиентского приложения эту колонку заполнять. Кстати, странно, в документации (ссылка от Denis Popov) написано : "SYS_GUID generates and returns a globally unique identifier (RAW value) made up of 16 bytes" и про "32-character hexadecimal representation of the 16-byte RAW value of the global unique identifier", а в примере там-же написано ALTER TABLE locations ADD (uid_col RAW(32)). А я сегодня проверял - лезет GUID в RAW(16)...непонятно зачем RAW(32)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 21:05 |
|
||
|
ROWID ???
|
|||
|---|---|---|---|
|
#18+
можно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2004, 13:38 |
|
||
|
|

start [/forum/topic.php?all=1&fid=35&tid=1554163]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 375ms |

| 0 / 0 |
