Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 Генерация GENERATE_UNIQUE в ms_sql  [new]
Alexandr Tar.
Member

Откуда:
Сообщений: 1
Может быть, кто подскажет, можно ли сгенерировать функцию GENERATE_UNIQUE в ms_sql?
22 ноя 16, 18:25    [19922208]     Ответить | Цитировать Сообщить модератору
 Re: Генерация GENERATE_UNIQUE в ms_sql  [new]
CawaSPb
Member

Откуда: Питер/Москва/Wroclaw
Сообщений: 1005
Alexandr Tar.
Может быть, кто подскажет, можно ли сгенерировать функцию GENERATE_UNIQUE в ms_sql?

Если вам нужен свой GUID, то там, соответственно, есть newid() (https://msdn.microsoft.com/en-us/library/ms190348.aspx).

Если же задача продублировать функцию при, например, миграции, то
а) Можно - это всего навсего Timestamp, упакованный в бинарный формат, + некоторый sequence (если гранулярности TIMESTAMP'а не хватает).
b) Необходимо определить, требуется ли сохранять то свойство, что TIMESTAMP(GENERATE_UNIQUE()) выдаёт время вызова ф-и/генерации значения (в текущей timezone)?
$ db2 "with t1(uid) as (
 values GENERATE_UNIQUE(), GENERATE_UNIQUE()
)select TIMESTAMP(uid) as ts, uid, current timestamp as current_timestamp from t1"

TS                         UID                           CURRENT_TIMESTAMP
-------------------------- ----------------------------- --------------------------
2016-11-22-21.46.55.668401 x'20161122214655668401000000' 2016-11-22-13.46.55.654178
2016-11-22-21.46.55.668414 x'20161122214655668414000000' 2016-11-22-13.46.55.654178

  2 record(s) selected.

Некоторая тонкость. В DB2 CURRENT TIMESTAMP определяется на этапе компиляции запроса, в то время как GENERATE_UNIQUE() выполняется для каждого элемента result set'а/изменяемой строки.
При написании своей GENERATE_UNIQUE для MSSQL смотрите, что там будет получаться с производительностью.
23 ноя 16, 00:48    [19923273]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить