批量新增触发器

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. );  
上一篇:体验Win8 Metro应用开发


下一篇:XWiki 6.3 M1 发布,Java 的 Wiki 系统