【发布时间】:2018-11-14 18:59:02
【问题描述】:
我需要在记录插入时创建一些客户编号,格式为“A”+ 4 位,基于 ID。所以记录 ID 23 -> A0023 等等。我目前的解决方案是这样的:
-- Table
create table t (
id bigserial unique primary key,
x text,
y text
);
-- Insert
insert into t (x, y) select concat('A',lpad((currval(pg_get_serial_sequence('t','id')) + 1)::text, 4, '0')), 'test';
这非常有效。现在我的问题是......这是“安全”的,因为 currval(seq)+1 保证与 id 列将接收到的相同?我认为它应该在语句执行期间被锁定。这是正确的方法还是有任何快捷方式可以直接访问要创建的ID?
【问题讨论】:
标签: postgresql currval