我有以下 SQL 脚本,它设置与 ID 列的最大值对应的序列值:
SELECT SETVAL('mytable_id_seq', COALESCE(MAX(id), 1)) FROM mytable;
在这种情况下我是否应该锁定“mytable”以防止在并行请求中更改 ID,如下例所示?
request #1 request #2
MAX(id)=5
inserted id 6
SETVAL=5
还是 setval(max(id)) 是原子操作?