pg_strict
防止不带WHERE条件的危险UPDATE和DELETE操作
概览
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 5830 | pg_strict | 否 | 是 | 是 | 是 | 否 | 否 | - |
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.0.5 | 1817161514 | pg_strict | - |
| RPM | PIGSTY | 1.0.5 | 1817161514 | pg_strict_$v | - |
| DEB | PIGSTY | 1.0.5 | 1817161514 | postgresql-$v-pg-strict | - |
构建
您可以使用 pig build 命令构建 pg_strict 扩展的 RPM / DEB 包:
BASH
安装
您可以直接安装 pg_strict 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
BASH
使用 pig 或者是 apt/yum/dnf 安装扩展:
安装
BASH
pig
BASH
dnf
BASH
apt
BASH
预加载配置:
BASH
创建扩展:
SQL
用法
来源:README, Release v1.0.5, API source
pg_strict 会阻断或警告省略 WHERE 子句的 UPDATE 和 DELETE 语句。它安装 post_parse_analyze_hook,因此必须通过 shared_preload_libraries 加载。
必要设置
SQL
GUC
pg_strict.require_where_on_updatepg_strict.require_where_on_delete
每个设置都支持 off、warn 和 on。
SQL
辅助函数
SQL
pg_strict_set_update_mode(mode)和pg_strict_set_delete_mode(mode)提供通用模式设置函数。SET LOCAL可在事务内用于一次性批量操作。
注意事项
- Enforcement 只检查是否存在
WHERE,不判断意图:任何非空WHERE子句都满足规则。 - 只检查
UPDATE和DELETE。 - 当前上游 release 是
1.0.5;上游文档记录 PostgreSQL 13 到 18,而db/extension.csv中的 Pigsty package row 覆盖 PostgreSQL 14 到 18。 - Pigsty 关于
pgrx0.17.0 的备注是 packaging/build metadata,不是文档化的用户侧功能变化。