批量新增触发器

简介:
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. );  
相关文章
|
16天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
34816 42
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
|
11天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
10589 35
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
6天前
|
人工智能 JavaScript Ubuntu
低成本搭建AIP自动化写作系统:Hermes保姆级使用教程,长文和逐步实操贴图
我带着怀疑的态度,深度使用了几天,聚焦微信公众号AIP自动化写作场景,写出来的几篇文章,几乎没有什么修改,至少合乎我本人的意愿,而且排版风格,也越来越完善,同样是起码过得了我自己这一关。 这个其实OpenClaw早可以实现了,但是目前我觉得最大的区别是,Hermes会自主总结提炼,并更新你的写作技能。 相信就冲这一点,就值得一试。 这篇帖子主要就Hermes部署使用,作一个非常详细的介绍,几乎一步一贴图。 关于Hermes,无论你赞成哪种声音,我希望都是你自己动手行动过,发自内心的选择!
2199 22
|
28天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
45705 155
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
10天前
|
机器学习/深度学习 存储 人工智能
还在手写Skill?hermes-agent 让 Agent 自己进化能力
Hermes-agent 是 GitHub 23k+ Star 的开源项目,突破传统 Agent 依赖人工编写Aegnt Skill 的瓶颈,首创“自我进化”机制:通过失败→反思→自动生成技能→持续优化的闭环,让 Agent 在实践中自主构建、更新技能库,持续自我改进。
1710 6
|
4天前
|
人工智能 弹性计算 安全
Hermes Agent是什么?怎么部署?超详细实操教程
Hermes Agent 是 Nous Research 于2026年2月开源的自进化AI智能体,支持跨会话持久记忆、自动提炼可复用技能、多平台接入与200+模型切换,真正实现“越用越懂你”。MIT协议,部署灵活,隐私可控。
1363 2

热门文章

最新文章

下一篇
开通oss服务