sql 相关文章
Relyt One 团队关于 sql 的文章、指南与工程笔记。
3 篇文章

Postgres 的 ID 为什么会跳号,以及如何修复导入数据后的「duplicate key」错误
PostgreSQL 的 serial 列和 identity 列中的空洞从何而来(回滚、ON CONFLICT、崩溃、CACHE),为什么导入数据后插入会报 duplicate key value violates unique constraint,一条重置所有序列的查询,integer ID 用完时会发生什么,以及无空洞的发票编号。每条语句都在 Postgres 17.11 上复现过。

用 Postgres 做任务队列:把 FOR UPDATE SKIP LOCKED 用对
如何在 PostgreSQL 17 中用 SELECT ... FOR UPDATE SKIP LOCKED 构建后台任务队列:为什么朴素的「先 SELECT 再 UPDATE」会把同一个任务领取两次,为什么只用 FOR UPDATE 会让工作进程互相等待,以及租约与重试、LISTEN/NOTIFY、vacuum,还有轮询的工作进程会对 Serverless 计算实例造成什么影响。每条语句都在 Postgres 17.11 上复现过。

Postgres 中的 INSERT ... ON CONFLICT 与 MERGE:该用哪种 upsert,以及各自会抛出的错误
在 PostgreSQL 17 中何时用 INSERT ... ON CONFLICT 做 upsert、何时用 MERGE;为什么 MERGE 在并发下会报重复键错误;以及如何修复 'cannot affect row a second time'、RETURNING 为空和 'no unique or exclusion constraint matching the ON CONFLICT specification'。每条语句都在 Postgres 17.11 上复现过。
更多文章仅有英文版。 英文文章