RUID

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Присвоение RUID объекту)
Строка 1: Строка 1:
RUID (Record Unique Identifier) — уникальный идентификатор записи в пределах всех баз данных системы [[Гедымин]].
+
'''RUID (Record Unique Identifier)''' — уникальный идентификатор записи для всех существующих в природе баз данных системы [[Гедымин]].
  
В пределах файла базы данных все объекты имеют уникальный целочисленный идентификатор благодаря использованию одного генератора [[gd_g_dbid]]. Каждая база данных имеет свой уникальный целочисленный идентификатор [[DBID]], который хранится в генераторе [[gd_g_dbid]]. RUID объекта — это два целых числа: идентификатор объекта и идентификатор базы данных, в которой этот объект был создан.  
+
В пределах файла базы данных все объекты имеют уникальный целочисленный идентификатор благодаря использованию одного на все таблицы генератора [[gd_g_dbid]]. Каждая база данных имеет свой уникальный целочисленный идентификатор [[DBID]], который хранится в генераторе [[gd_g_dbid]]. RUID объекта — это два целых числа:  
 +
 
 +
# XID — идентификатор объекта на момент его создания.
 +
# DBID — идентификатор базы данных, в которой этот объект был создан.
  
 
==== Строковое представление ====
 
==== Строковое представление ====
  
В строковом представлении RUID имеет следующий вид: "recid_dbid", где recid -- это идентификатор записи, а dbid -- базы данных. Обычно, РУИД в строковом представлении используется при вызове функции gdcBaseManager.GetIDByRUIDString. Например:
+
В строковом представлении RUID имеет следующий вид: '''"xid_dbid"'''. Обычно, РУИД в строковом представлении используется при вызове функции '''gdcBaseManager.GetIDByRUIDString'''. Например:
  
 
   gdcBaseManager.GetIDByRUIDString("147012468_486813904")
 
   gdcBaseManager.GetIDByRUIDString("147012468_486813904")
Строка 20: Строка 23:
 
* В момент открытия [[Окно Свойста Объекта|диалогового окна Свойства объекта]].
 
* В момент открытия [[Окно Свойста Объекта|диалогового окна Свойства объекта]].
 
* В процессе [[Бизнес-объект. Сериализация данных|сохранения объекта в поток]].
 
* В процессе [[Бизнес-объект. Сериализация данных|сохранения объекта в поток]].
 +
 +
Присвоить РУИДы всем записям в базе можно с помощью следующего запроса:
 +
 +
<syntaxhighlight lang="SQL"
 +
EXECUTE BLOCK
 +
AS
 +
  DECLARE VARIABLE RN VARCHAR(31);
 +
  DECLARE VARIABLE EK INTEGER;
 +
BEGIN
 +
  SELECT FIRST 1 contactkey
 +
  FROM gd_user u
 +
  WHERE u.ibname = CURRENT_USER
 +
  INTO :EK;
 +
 +
  FOR
 +
    SELECT rf.rdb$relation_name
 +
    FROM rdb$relation_fields rf JOIN rdb$fields f
 +
      ON rf.rdb$field_source = f.rdb$field_name
 +
    WHERE rf.rdb$field_name = 'ID' AND f.rdb$field_name = 'DINTKEY'
 +
      /*
 +
        укажите здесь условие, если в обработку необходимо
 +
        включить только некоторые таблицы 
 +
 +
        AND rf.rdb$relation_name IN (...)
 +
      */
 +
    INTO :RN
 +
  DO BEGIN
 +
    EXECUTE STATEMENT
 +
      'MERGE INTO gd_ruid r ' ||
 +
      '  USING (SELECT id FROM ' || :RN || ' WHERE id >= 147000000) i ' ||
 +
      '  ON (i.id = r.id) ' ||
 +
      '  WHEN NOT MATCHED THEN ' ||
 +
      '    INSERT (id, xid, dbid, modified, editorkey) ' ||
 +
      '    VALUES (i.id, i.id, GEN_ID(gd_g_dbid, 0), CURRENT_TIMESTAMP, ' || :EK || ') ';
 +
  END
 +
END
 +
</syntaxhighlight>
  
 
==== См. также ====
 
==== См. также ====
Строка 26: Строка 66:
  
 
[[Category:База данных]]
 
[[Category:База данных]]
 +
[[Category:Руководство разработчика]]

Версия 19:03, 12 апреля 2012

RUID (Record Unique Identifier) — уникальный идентификатор записи для всех существующих в природе баз данных системы Гедымин.

В пределах файла базы данных все объекты имеют уникальный целочисленный идентификатор благодаря использованию одного на все таблицы генератора gd_g_dbid. Каждая база данных имеет свой уникальный целочисленный идентификатор DBID, который хранится в генераторе gd_g_dbid. RUID объекта — это два целых числа:

  1. XID — идентификатор объекта на момент его создания.
  2. DBID — идентификатор базы данных, в которой этот объект был создан.

Содержание

Строковое представление

В строковом представлении RUID имеет следующий вид: "xid_dbid". Обычно, РУИД в строковом представлении используется при вызове функции gdcBaseManager.GetIDByRUIDString. Например:

 gdcBaseManager.GetIDByRUIDString("147012468_486813904")

Хранение RUID в базе данных

Связи между идентификатором записи в текущей базе данных и ее РУИДом хранятся в таблице GD_RUID.

Присвоение RUID объекту

RUID присваивается объекту в следующих случаях:

Присвоить РУИДы всем записям в базе можно с помощью следующего запроса:

= 147000000) i ' ||
      '  ON (i.id = r.id) ' ||
      '  WHEN NOT MATCHED THEN ' ||
      '    INSERT (id, xid, dbid, modified, editorkey) ' ||
      '    VALUES (i.id, i.id, GEN_ID(gd_g_dbid, 0), CURRENT_TIMESTAMP, ' || :EK || ') ';
  END
END

См. также

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты