如何在Postgres 9.0+中创建Windows格式的日志?
我试过函数
CREATE or REPLACE FUNCTION public.getguid() RETURNS varchar AS $BODY$
DECLARE
v_seed_value varchar(32);
BEGIN
select
md5(
inet_client_addr()::varchar ||
timeofday() ||
inet_server_addr()::varchar ||
to_hex(inet_client_port())
)
into v_seed_value;
return (substr(v_seed_value,1,8) || '-' ||
substr(v_seed_value,9,4) || '-' ||
substr(v_seed_value,13,4) || '-' ||
substr(v_seed_value,17,4) || '-' ||
substr(v_seed_value,21,12));
END; $BODY$ LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;
字符串
从
http://postgresql.1045698.n5.nabble.com/newid-in-postgres-td1879346.html
试图
select getguid()
union all
select getguid()
型
但它返回相同的值
"c41121ed-b6fb-c9a6-bc9b-574c82929e7e"
"c41121ed-b6fb-c9a6-bc9b-574c82929e7e"
型
如何修复这个问题,以便返回唯一的行?
2条答案
按热度按时间oyxsuwqo1#
PostgreSQL有
uuid-ossp
扩展,它与标准发行版一起提供,它有5个标准算法用于生成uuid
s。请注意,guid
是uuid
的Microsoft版本,概念上它们是一样的。字符串
然后:
型
还要注意的是,一旦你安装了扩展,PostgreSQL就有了一个实际的二进制
uuid
类型,长度为16字节。使用二进制类型比使用文本等价物要快得多,占用的空间也更少。如果你确实需要字符串版本,你可以简单地将其转换为text
:型
PostgreSQL 13+
您现在可以使用内置函数
gen_random_uuid()
来获取版本4随机UUID。7tofc5zh2#
字符串