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
的示例用法,这里创建了一个规则,该规则导致具有奇数 id 值的行从 INSERT
操作中删除
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