PostgreSQL 数据库规则基础操作

规则可以用于实现视图的更新、插入和删除操作,也可以用于复杂的查询改写。创建规则的基本语法如下:

CREATEREPLACE RULE 规则名 AS ON 事件
    TO 表名/视图名  WHERE 条件
    DO  ALSO或INSTEAD 新操作命令

其中,CREATEREPLACE表示创建或者修改规则,事件包括:SELECTINSERTUPDATEDELETEDO [ ALSO | INSTEAD ]指定规则的行为。ALSO 表示除了执行原操作外,还执行新操作命令;INSTEAD 表示用新操作命令替换原操作命令。例如,创建一个视图 v_stu,并定义一个 SELECT 规则:

CREATE VIEW v_stu AS SELECT * FROM student;
CREATE RULE "RETURN" AS ON SELECT TO v_stu
DO INSTEAD SELECT * FROM student; 

QGIS文档中提供了一个创建日志规则的案例:将 people 表中 phone_no 的每次更改记录到 people_log 表。

# 创建people_log 
create table people_log (name text, time timestamp default NOW()); 
# 创建一个规则,用于更新 people_log 表
create rule people_log as on update to people
  where NEW.phone_no <> OLD.phone_no
  do insert into people_log values (OLD.name);
# 修改测试
update people set phone_no = '082 555 1234' where id = 2;
# 检查people是否更新
select * from people where id=2;
# 查看规则表
select * from people_log;
# 规则表内容
 name    |            time
------------+----------------------------
 Joe Bloggs | 2014-01-11 14:15:11.953141

你可能感兴趣的:(数据库,数据库,postgresql,oracle)