powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / ROWID ???
7 сообщений из 32, страница 2 из 2
ROWID ???
    #32458641
Zaxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вдогонку:

хранить GUID правилнее даже не в CHAR(32) а в RAW(16).
...
Рейтинг: 0 / 0
ROWID ???
    #32458799
Фотография Leonid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 с этим еще лучше справится.
...
Рейтинг: 0 / 0
ROWID ???
    #32459041
Zaxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
...
Рейтинг: 0 / 0
ROWID ???
    #32459131
Фотография Leonid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZaxxЧем по вашему отличается система с триггером (из 3 строк) который будет засовывать GUID в поле от поля с типом GUID в M$SQL ??? Триггер это "запихивание GUID вручную" ???


Хорошо Zaxx, возможно, я не так сведущ в PL/SQL как вы.
Скажите мне как в Oracle-овском тригере на PL/SQL, без использования внешних процедур и Java взять GUID и тогда разойдемся друзьями.
...
Рейтинг: 0 / 0
ROWID ???
    #32459172
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так ведь 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
...
Рейтинг: 0 / 0
ROWID ???
    #32459257
Zaxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разойдёмся :) :

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)...
...
Рейтинг: 0 / 0
ROWID ???
    #32459478
Gt.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt.
Гость
можно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SQL> create table test5 (
  id RAW( 32 ) default SYS_GUID(),
  name varchar2( 10 ) );

Table created.

SQL> insert into test5 (name) values ('shit') ;

 1  row created.

SQL> insert into test5 (name) values ('shit') ;

 1  row created.

SQL> select * from test5 ;

ID                                                               NAME
 ---------------------------------------------------------------- ----------
 
D69B46C76A14A471E030007F010042DF                                 shit
D69B46C76A15A471E030007F010042DF                                 shit


...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / ROWID ???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]