CREATE RULE 是用于定义规则的 DDL 命令。
CREATE RULE 始终存在于 PostgreSQL 中。
变更历史
- PostgreSQL 16
ON SELECT规则已无法在表上手动创建(提交 b23cd185)
- PostgreSQL 8.0
- 添加了
ALSO关键字(提交 943eae92)
- 添加了
- PostgreSQL 7.3
- 添加了
CREATE [ OR REPLACE ] RULE语法(提交 248c67d7)
- 添加了
示例
CREATE RULE 的示例用法,这里创建了一个规则,该规则会导致从 INSERT 操作中删除 id 值是奇数的行
postgres=# CREATE RULE foobar AS ON INSERT TO foo WHERE NEW.id % 2 = 1 DO INSTEAD NOTHING; CREATE RULE
尝试插入一系列连续值将导致目标表填充如下
postgres=# INSERT INTO foo VALUES (1), (2), (3); INSERT 0 1 postgres=# SELECT * FROM foo; id ---- 2 (1 row)
参考资料
- PostgreSQL 文档: CREATE RULE
