- import java.io.BufferedReader;
- import java.io.FileInputStream;
- import java.io.InputStreamReader;
- /**
- * http://www.open-open.com/lib/view/open1427082615949.html
- * 利用触发器设置PostgreSQL表监控:监控表的增,删,改
- * @author jade
- */
- public class BatchGenTriger {
- public static void main(String[] args) {
- String filePath = "C:\\Users\\jade\\Desktop\\trigers.txt"; //给我你要读取的文件夹路径
- try {
- try (BufferedReader bufReader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8")))//数据流读取文件
- {
- String temp = null;
- while ((temp = bufReader.readLine()) != null) {
- System.out.println("CREATE TRIGGER \"tri_" + temp + "\" BEFORE INSERT OR UPDATE OR DELETE ON " + temp + " FOR EACH ROW EXECUTE PROCEDURE change_trigger();");
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- //CREATE FUNCTION change_trigger()
- // RETURNS trigger AS $$
- // BEGIN
- // IF TG_OP = 'INSERT' THEN
- // INSERT INTO logging.user_history(tabname,schemaname,operation,new_val) values(TG_RELNAME,TG_TABLE_SCHEMA,TG_OP, (NEW));
- // RETURN NEW;
- // ELSIF TG_OP = 'UPDATE' THEN
- // INSERT INTO logging.user_history(tabname,schemaname,operation,new_val,old_val) values(TG_RELNAME,TG_TABLE_SCHEMA,TG_OP, (NEW), (OLD));
- // RETURN NEW;
- // ELSIF TG_OP = 'DELETE' THEN
- // INSERT INTO logging.user_history(tabname,schemaname,operation, old_val) values(TG_RELNAME,TG_TABLE_SCHEMA,TG_OP, (OLD));
- // RETURN OLD; --返回值要与ELSIF平齐,因为先插入后最好才执行返回
- // END IF;
- //END;
- //$$ LANGUAGE 'plpgsql' SECURITY DEFINER;--security definer是指定创建该函数用户的权限执行,security invoker是指以调用该函数用户发权限执行
- CREATE SCHEMA logging;
- CREATE TABLE logging.user_history (
- id serial,
- tstamp timestamp DEFAULT now(),
- schemaname text,
- tabname text,
- operation text,
- who text DEFAULT current_user,
- new_val json,
- old_val json
- );