Postgres 命令行 psql 没有提供呆瓜模式。社区曾经有用户尝试直接在 Server 端加一个类似的限制,但是被驳回了 https://www.postgresql.org/message-id/flat/1580673.1675373572%40sss.pgh.pa.us#48697ecc933fe79695d7bc5db7badf9f社区于是又想了个曲线救国的方法,实现了一个 safeupdate extension,来达到类似的效果。
Bytebase 的呆瓜模式
Bytebase 也有类似的呆瓜模式,能同时应用到 MySQL 和 PostgreSQL 及其他支持的数据库上。用户在 Bytebase SQL Editor 的普通模式进行非 SELECT 操作是被禁止的。如果是普通开发者的话,就必须走工单审核流程。如果是 DBA,则也可以选择进入管理员模式再执行。同时也可以在 SQL 审核规则中配置必须要有 WHERE,否则就报错。回到 MySQL 和 PostgreSQL 在呆瓜模式上的区别,我自己还是更喜欢 MySQL 的方案,也希望在 psql 中也提供类似的选项。不过笔者觉得 PG 社区拒掉 Server 端加呆瓜模式的补丁是合理的,只是原因和审核官 Tom Lane 给的不同。Tom 说
The cases that I actually see reported are not "I left off the WHERE" but more like "I fat-fingered a variable in a sub-select so that it's an outer reference, causing the test to degenerate to WHERE x = x"