如何在PostgreSQL中实现“获取或创建”操作以及为何这一操作极易出错
本文深入剖析PostgreSQL中“获取或创建”(get-or-create)的实现陷阱与演进方案:从朴素SELECT+INSERT的竞态缺陷,到异常捕获引发的表膨胀;从NOT EXISTS的TOC-TOU风险,到ON CONFLICT DO NOTHING的优雅解法;最终揭示高并发下幂等性与隔离级别的根本矛盾——单SQL无法完美兼顾。涵盖性能、安全、可维护性全维度对比,助你避开生产环境深坑。
翻译:PostgreSQL 鲜为人知的特性
本文揭秘PostgreSQL 17个鲜为人知却极其实用的特性:从Upsert行数区分、列级权限控制,到`DISTINCT ON`取分组首行、`OVERLAPS`判断时间重叠,再到美元符号引用、`NOT VALID`约束延迟验证等,助你深度挖掘已拥有的强大功能。
PL/pgSQL 入门教程(五):触发器
PostgreSQL触发器是数据库的“自动服务员”,可在INSERT/UPDATE/DELETE等操作时自动执行校验、日志记录、汇总更新等逻辑。支持BEFORE/AFTER/INSTEAD OF时机,ROW/STATEMENT级别,配合NEW/OLD变量实现灵活数据管控,大幅提升数据一致性与运维效率。
PL/pgSQL 入门教程(四):使用游标(cursor)
游标是PostgreSQL中“按需取数”的数据指针,避免大查询内存溢出;支持逐行处理、动态查询、精准更新/删除及函数返回大结果集。分未绑定(灵活)与绑定(固定)两类,核心操作为声明→打开→FETCH/MOVE/UPDATE→关闭,FOR循环可自动简化遍历。
PL/pgSQL 入门教程(一):语法篇
本教程为PL/pgSQL入门首篇,系统讲解其核心基础与语法规则。涵盖函数创建、块结构、变量声明、参数传递、返回类型及排序规则等关键知识点,助你掌握在PostgreSQL中编写高效存储过程与函数的必备技能,提升数据库逻辑处理能力。
PostgreSQL SQL函数语法详解
本文深入讲解PostgreSQL中SQL语言函数的编写,涵盖参数引用、返回类型(基类型/复合类型/集合)、输出参数、可变参数、默认值、多态函数及排序规则等核心特性,系统阐述其语法、行为与最佳实践。
盘点PostgreSQL C语言自定义函数返回数据集的各种方法
本文介绍在C语言中开发PostgreSQL用户自定义函数时,免去手动创建返回类型的四种方法。核心仍基于SPI查询和SRF返回数据,区别仅在于SQL中声明返回结构的方式。重点推荐`RETURNS TABLE`方式,一步到位、简洁直观,适合绝大多数场景;`CREATE TYPE+SETOF`适用于多函数复用结构;`OUT参数`风格类似TABLE;而`SETOF record`需调用时指定列,使用繁琐,建议仅用于临时测试。四种方法C代码完全相同,只需调整SQL注册语法,新手掌握`RETURNS TABLE`即可高效开发。