gpt4 book ai didi

PostgreSQL 在插入期间获取新 ID

转载 作者:行者123 更新时间:2023-11-29 13:12:20 31 4
gpt4 key购买 nike

我需要在记录插入中创建一些客户编号,格式为“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?

最佳答案

无需存储这些数据,您可以在每次需要时查询它,从而使整个过程更不容易出错:

SELECT id, 'A' + LPAD(id::varchar, 4, '0')
FROM t

关于PostgreSQL 在插入期间获取新 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53307053/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com