主要观点:作者是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) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。