четверг, 5 марта 2009 г.

MS SQL newid() для PostgreSQL

UPDATE:
Как оказалось есть UUID. но нет функции-генератора.
Так что я поменял тип возвращаемого результата на UUID.


В данный момент работаю над переходом с MSSQL на бесплатный PostgreSQL.
Первое, на что напоролся - GUID`ов НЕТ!
Поковырял функции постгреса и написал замену:


drop function newid();
create or replace function newid() returns uuid
as $$

DECLARE r varchar='';
chars varchar='0123456789abcdef';
i int:=1;
pos int=0;
one_char varchar(1);
begin


while i<=32 LOOP
pos=round(random()*15)+1;
one_char=cast (substr(chars,pos, 1) as varchar);
r=r||one_char;
if (length(r) in (8,13,18,23)) then r=r||'-'; end if;
i=i+1;
end LOOP;

return r;
end
$$
LANGUAGE 'plpgsql';



Комментариев нет: