SQL 中如何统计满足条件与不满足条件的数据

在 SQL 里同时统计“满足条件”和“不满足条件”的数量,看起来简单,但一旦遇到 NULL、分组和跨数据库差异,结果很容易偏。本文用可直接落地的写法说明为什么应优先使用两个 `SUM(CASE WHEN ...)`,并补齐分组比例、兼容性和 NULL 检查这几个关键点。

SQL 中如何统计满足条件与不满足条件的数据

SQL 触发器抛出异常后,事务为什么会被回滚

触发器里一旦抛错,为什么有的库会自动回滚,有的却只是报错后继续保留数据?关键不在“触发器会不会回滚”,而在数据库引擎、事务设置和异常传播链路。本文用 MySQL 与 SQL Server 对照拆开讲清常见误判与排查方法。

SQL 触发器抛出异常后,事务为什么会被回滚

Oracle 21c 中怎么用 ROW_NUMBER() 查询分组最新记录?

在 Oracle 21c 里,想查“每组最新一条记录”,核心不是单独使用 ROW_NUMBER(),而是先按分组键和时间等“新旧字段”做窗口排序,再取编号为 1 的行。本文同时说明它为何不能直接和 GROUP BY 混用、并列记录该换用什么函数,以及索引应如何配合。

Oracle 21c 中怎么用 ROW_NUMBER() 查询分组最新记录?

Rust 在 Linux 下做数据库操作,有哪些真正值得关注的优势

Rust 在 Linux 下做数据库操作的优势,不只体现在跑得快,更关键的是把稳定性、安全性和并发能力一起拉高。本文从内存安全、性能模型、类型系统、生态工具链和系统级安全配合几个方面拆开讲清,帮助你判断 Rust 是否适合数据库驱动、存储引擎或高并发数据服务场景。

Rust 在 Linux 下做数据库操作,有哪些真正值得关注的优势

如何避免 SQL 触发器造成循环更新

SQL 触发器一旦回写自身监听的表,三大数据库的表现并不一样:MySQL 直接报 `ERROR 1442`,SQL Server 可能静默递归,PostgreSQL 则默认允许但需要手动拦截。本文按数据库拆解限制、可行写法和容易踩坑的上下文污染问题。

如何避免 SQL 触发器造成循环更新

如何在不停机情况下修改 SQL 触发器

跨数据库环境里,触发器几乎都不能直接“原地修改”。想在不停机前提下更新逻辑,可靠办法是把它当成一次受控的原子替换:先确认原定义,再在合适的会话和并发条件下执行 `DROP + CREATE`,最后用行为验证确认新逻辑已生效。

如何在不停机情况下修改 SQL 触发器