我有一个char字段,它的默认值应该是ksuid。如何在postgres中生成ksuid?
发布于 2020-07-30 00:01:01
我建议您最好的选择是创建一个用户域。然后定义一个函数来生成ksuid。然后将域更改为,以使用此函数作为默认函数。在需要时,将您的列定义为该域类型。
-- setup domain and the generating function
create domain ksuid character varying(27);
create or replace function generate_ksuid()
returns ksuid
language sql
as $$
select substring(
replace(to_char(clock_timestamp(),'yyyymmddhh24missus')
|| (to_char(random()*1e9,'000000000')
),' ',''),1,27)::ksuid;
$$;
alter domain ksuid set default generate_ksuid();
请参阅完整示例,包括使用here。当然,函数generate_ksuid需要根据您的需求进行调整。这个例子只是基于clock_timestamp和一个随机数。
https://stackoverflow.com/questions/63152831
复制相似问题