postgresql通过创建规则(RULE)实现表记录
来源:互联网 发布:3g网络精灵 编辑:程序博客网 时间:2024/05/18 01:49
1、创建原表mytabcreate table mytab(id int primary key,note text);创建记录表mytab_logcreate table mytab_log(seq bigserial primary key,oprtype char(1),oprtime timestamp,old_id int,new_id int,old_note text,new_note text);2、创建规则 create rule rule_mytab_insert as on insert to mytab do also insert into mytab_log(oprtype,oprtime,new_id,new_note) values('i',now(),new.id,new.note); create rule rule_mytab_update as on update to mytab do also insert into mytab_log(oprtype,oprtime,old_id,new_id,old_note,new_note) values('u',now(),old.id,new.id,old.note,new.note); (更新数据时实现记录旧数据和新数据,类型为”u“) create rule rule_mytab_delete as on delete to mytab do also insert into mytab_log(oprtype,oprtime,old_id,old_note) values('d',now(),old.id,old.note);insert into mytab values(1,'abc');insert into mytab values(2,'bac');insert into mytab values(3,'cab');tian=# select * from mytab; id | note ----+------ 1 | abc 2 | bac 3 | cab(3 rows)update mytab set note='ccc' where id=3;delete from mytab where id=3;tian=# select * from mytab; id | note ----+------ 1 | abc 2 | bac(2 rows)3、查看数据记录tian=# select * from mytab_log; seq | oprtype | oprtime | old_id | new_id | old_note | new_note -----+---------+----------------------------+--------+--------+----------+---------- 1 | i | 2017-02-25 15:19:20.932179 | | 1 | | abc 2 | i | 2017-02-25 15:19:26.350333 | | 2 | | bac 3 | i | 2017-02-25 15:19:31.822498 | | 3 | | cab 4 | u | 2017-02-25 15:19:50.297173 | 3 | 3 | cab | ccc 5 | d | 2017-02-25 15:19:56.557354 | 3 | | ccc | (5 rows)方式二:【改变更新记录数据的方式】create table mytab2(id int primary key,note text);create table mytab_log2(seq bigserial primary key,oprtype char(1),oprtime timestamp,id int,note text);create rule rule_mytab_insert2 as on insert to mytab2 do also insert into mytab_log2(oprtype,oprtime,id,note) values('i',now(),new.id,new.note); create rule rule_mytab_update2 as on update to mytab2 do also (insert into mytab_log2(oprtype,oprtime,id, note) values('d',now(),old.id,old.note); insert into mytab_log2(oprtype,oprtime,id, note) values('i',now(),new.id,new.note)); (更新数据时通过分解为删除和插入两部分实现记录旧数据和新数据,类型为”d“和”i“) create rule rule_mytab_delete2 as on delete to mytab2 do also insert into mytab_log2(oprtype,oprtime,id,note) values('d',now(),old.id,old.note); tian=# insert into mytab2 values(1,'1111');INSERT 0 1tian=# insert into mytab2 values(2,'2222');INSERT 0 1tian=# insert into mytab2 values(3,'2222');INSERT 0 1tian=# select * from mytab_log2; seq | oprtype | oprtime | id | note -----+---------+----------------------------+----+------ 1 | i | 2017-02-25 15:42:07.852126 | 1 | 1111 2 | i | 2017-02-25 15:42:15.638697 | 2 | 2222 3 | i | 2017-02-25 15:42:19.748022 | 3 | 2222 tian=# update mytab2 set note='3333' where id = 3;UPDATE 1tian=# delete from mytab2 where id =3;DELETE 1tian=# select * from mytab_log2; seq | oprtype | oprtime | id | note -----+---------+----------------------------+----+------ 1 | i | 2017-02-25 15:42:07.852126 | 1 | 1111 2 | i | 2017-02-25 15:42:15.638697 | 2 | 2222 3 | i | 2017-02-25 15:42:19.748022 | 3 | 2222 4 | d | 2017-02-25 15:43:18.741909 | 3 | 2222 5 | i | 2017-02-25 15:43:18.741909 | 3 | 3333 6 | d | 2017-02-25 15:44:14.097896 | 3 | 3333(6 rows)日志紧凑了许多
本人原博客连接:http://blog.csdn.net/oraclesand/article/details/57083432
BY 海无涯
阅读全文
0 0
- postgresql通过创建规则(RULE)实现表记录
- postgresql通过创建规则(RULE)实现表记录
- python实现-合并表记录
- 创建块定义(块表记录)
- postgreSQL 另一种查看表记录总数的方法
- SQL2005实现表记录递归查询
- 通过SE16N用&SAP_EDIT直接修改表记录
- PostgreSQL RULE
- 创建表记录数据库虚拟日志文件的情况
- c++创建线性链表记录学生信息
- SQL 删除主表保留从表记录 怎么实现
- rule 规则
- 循环删除表记录
- 随机取表记录
- oracle表记录恢复
- mysql复制表记录
- 表记录的检索
- 合并表记录
- iOS 时间选择器 支持月 日
- 错误代码: 1052 Column 'sys_date' in where clause is ambiguous
- eclipse集成maven和scala时缺少jar包的buildpath问题
- 增大oracle数据库进程数ORA-12519: TNS:no app
- Gson 反序列化导致成员变量声明时赋值失败
- postgresql通过创建规则(RULE)实现表记录
- js二维数组
- A系统测试工作总结
- C\C++ 中的绝对值函数:abs()、cabs()、fabs()、labs()
- 数据库_实验一
- Git 基础
- SpringMVC下实现多文件上传功能
- 读取txt,写入list,list保存txt
- DescriptionResourcePathLocationType Project configuration is not up-to-date with pom.xml. Run Maven-