博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
批量新增触发器
阅读量:7105 次
发布时间:2019-06-28

本文共 1734 字,大约阅读时间需要 5 分钟。

Java代码  
  1. import java.io.BufferedReader;  
  2. import java.io.FileInputStream;  
  3. import java.io.InputStreamReader;  
  4. /** 
  5.  * http://www.open-open.com/lib/view/open1427082615949.html 
  6.  * 利用触发器设置PostgreSQL表监控:监控表的增,删,改 
  7.  * @author jade 
  8.  */  
  9. public class BatchGenTriger {  
  10.   
  11.     public static void main(String[] args) {  
  12.         String filePath = "C:\\Users\\jade\\Desktop\\trigers.txt"//给我你要读取的文件夹路径  
  13.         try {  
  14.             try (BufferedReader bufReader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8")))//数据流读取文件  
  15.             {  
  16.                 String temp = null;  
  17.                 while ((temp = bufReader.readLine()) != null) {  
  18.                     System.out.println("CREATE TRIGGER \"tri_" + temp + "\" BEFORE INSERT OR UPDATE OR DELETE ON " + temp + " FOR EACH ROW EXECUTE PROCEDURE change_trigger();");  
  19.                 }  
  20.             }  
  21.         } catch (Exception e) {  
  22.             e.printStackTrace();  
  23.         }  
  24.     }  
  25. }  
  26.   
  27. //CREATE FUNCTION change_trigger()  
  28. //    RETURNS trigger AS $$  
  29. //    BEGIN  
  30. //        IF TG_OP = 'INSERT' THEN  
  31. //            INSERT  INTO logging.user_history(tabname,schemaname,operation,new_val)  values(TG_RELNAME,TG_TABLE_SCHEMA,TG_OP, (NEW));  
  32. //        RETURN NEW;  
  33. //        ELSIF TG_OP = 'UPDATE'  THEN  
  34. //                INSERT INTO logging.user_history(tabname,schemaname,operation,new_val,old_val) values(TG_RELNAME,TG_TABLE_SCHEMA,TG_OP, (NEW), (OLD));  
  35. //        RETURN NEW;  
  36. //        ELSIF TG_OP = 'DELETE'  THEN  
  37. //              INSERT INTO logging.user_history(tabname,schemaname,operation, old_val) values(TG_RELNAME,TG_TABLE_SCHEMA,TG_OP, (OLD));  
  38. //    RETURN OLD; --返回值要与ELSIF平齐,因为先插入后最好才执行返回  
  39. //    END IF;  
  40. //END;  
  41. //$$ LANGUAGE 'plpgsql' SECURITY DEFINER;--security definer是指定创建该函数用户的权限执行,security invoker是指以调用该函数用户发权限执行  

 

Sql代码  
  1. CREATE SCHEMA logging;  
  2. CREATE TABLE logging.user_history (  
  3.     id serial,  
  4.     tstamp timestamp DEFAULT now(),  
  5.     schemaname text,  
  6.     tabname text,  
  7.     operation text,  
  8.     who text DEFAULT current_user,  
  9.     new_val json,  
  10.     old_val json  
  11. );  

转载地址:http://nmjhl.baihongyu.com/

你可能感兴趣的文章
iptables简单设置
查看>>
《Java从入门到放弃》JavaSE入门篇:面向对象语法一(入门版)
查看>>
我的友情链接
查看>>
京东自建物流寓意电商进入蜕化阶段
查看>>
Kali Linux 2016.2发布提供虚拟机以及系统镜像下载
查看>>
关于配置
查看>>
2017年开工啦
查看>>
响应式微服务 in java 译 <十八> Deploying a Microservice in OpenShift
查看>>
我的友情链接
查看>>
使用Python调度Kubernetes
查看>>
Nginx配置实例
查看>>
oracle 取余/求积
查看>>
CCNA OSPF特性、术语
查看>>
windows 系统如何开启“上帝模式”的方法
查看>>
我的友情链接
查看>>
Python - 装饰器使用过程中的误区
查看>>
Java——容器(Collection)
查看>>
常见的RAID磁盘阵列
查看>>
IDS和IPS的比较
查看>>
进程间通信之消息队列
查看>>