主要观点:作者是sqlc
的粉丝,但作为新手仍在探索其边缘案例,今日案例是使用postgres UPSERT
查询。介绍了UPSERT
的概念及示例,指出在sqlc
中生成的SaveUser
查询存在问题,即id
字段为非空的uuid.UUID
类型,导致新记录插入时uuid
为零值,后续新记录会更新现有零 ID 记录,并非期望行为。
关键信息:
sqlc
被称为反向ORM
。UPSERT
可创建或更新记录。sqlc
生成的SaveUser
查询中id
字段类型及问题。
重要细节:postgres UPSERT
示例查询及作用。- 解决方法是结合
nullif
和coalesce
,当@id
为uuid
零值时用uuid_generate_v4()
,否则使用@id
,以实现UPSERT
效果。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。