批量新增触发器

  1. 云栖社区>
  2. 博客列表>
  3. 正文

批量新增触发器

珠海_jadeluo 2016-05-18 09:35:28 浏览673 评论0

摘要: Java代码   import java.io.BufferedReader;   import java.io.FileInputStream;   import java.io.InputStreamReader;   /**   * http://www.

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. );  

用云栖社区APP,舒服~

【云栖快讯】诚邀你用自己的技术能力来用心回答每一个问题,通过回答传承技术知识、经验、心得,问答专家期待你加入!  详情请点击

网友评论

珠海_jadeluo
文章155篇 | 关注2
关注
一种适用于大规模并行批处理作业的分布式云服务。可支持海量作业并发规模,系统自动完成资源管理,... 查看详情
是一款简单高效的电子邮件发送服务,它构建在可靠稳定的阿里云基础之上,帮助您快速、精准地实现事... 查看详情
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效... 查看详情
阿里云总监课正式启航

阿里云总监课正式启航