如何在postgresql中生成自定义代码
How to generate custom code in postgresql
我想在 postgresql 中为 table 创建一个代码。
该模型可能看起来像:
事件{id,代码,名称,created_by}
该代码将从 E0001 开始,到 E9999 结束。这个想法是在插入时检查,如果没有代码生成它,否则插入提供的代码。
我假设我必须使用触发器,但我不知道如何使用该序列生成该代码并检查是否存在。
帮助。
您可以使用 lpad
函数用零填充数字。
select 'E' || lpad (45::text, 5, '0')
您可以在使用序列的列定义中使用 DEFAULT
子句:
CREATE SEQUENCE seq;
ALTER TABLE mytab ALTER code SET DEFAULT 'E' || CAST(nextval('seq') TO text);
我终于通过这样做解决了:
创建序列
CREATE SEQUENCE seq;
并使用
设置代码的默认值
('E'::text || lpad((nextval('seq'::regclass))::text, 4, '0'::text))
谢谢你们,因为我用了两个答案。
我想在 postgresql 中为 table 创建一个代码。 该模型可能看起来像: 事件{id,代码,名称,created_by} 该代码将从 E0001 开始,到 E9999 结束。这个想法是在插入时检查,如果没有代码生成它,否则插入提供的代码。 我假设我必须使用触发器,但我不知道如何使用该序列生成该代码并检查是否存在。 帮助。
您可以使用 lpad
函数用零填充数字。
select 'E' || lpad (45::text, 5, '0')
您可以在使用序列的列定义中使用 DEFAULT
子句:
CREATE SEQUENCE seq;
ALTER TABLE mytab ALTER code SET DEFAULT 'E' || CAST(nextval('seq') TO text);
我终于通过这样做解决了:
创建序列
CREATE SEQUENCE seq;
并使用
设置代码的默认值('E'::text || lpad((nextval('seq'::regclass))::text, 4, '0'::text))
谢谢你们,因为我用了两个答案。