当前位置: 首页 > news >正文

单位网站建设方案承接网站建设服务

单位网站建设方案,承接网站建设服务,如何利用模板建站,西安美食网页设计在PostgreSQL中#xff0c;事件触发器#xff08;Event Trigger#xff09;是一种特殊的触发器类型#xff0c;它允许你在特定的数据库系统事件发生时执行特定的操作。与普通的触发器不同#xff0c;事件触发器并不与特定的表或视图相关联#xff0c;而是与数据库级别的全…在PostgreSQL中事件触发器Event Trigger是一种特殊的触发器类型它允许你在特定的数据库系统事件发生时执行特定的操作。与普通的触发器不同事件触发器并不与特定的表或视图相关联而是与数据库级别的全局事件相关联。 参考官方文档如下 https://www.postgresql.org/docs/16/functions-event-triggers.html 事件触发器的特点 全局作用事件触发器作用于整个数据库实例而不是单个表或视图。系统事件它们响应的是数据库系统级的事件如DDL数据定义语言命令的执行、配置参数的更改、日志文件的切换等。灵活性可以定义复杂的响应逻辑通过PL/pgSQL、PL/Tcl、PL/Perl等过程语言来实现。 事件触发器的使用场景 审计和日志记录记录所有DDL操作的日志以便进行审计或回滚。安全策略实施防止未经授权的DDL更改或确保在更改前满足某些条件。自动化任务在数据库达到特定条件时自动执行维护任务如清理日志、备份等。 事件触发器的创建 创建事件触发器需要两个步骤 定义触发器函数这个函数将包含事件发生时需要执行的逻辑。创建事件触发器将这个触发器函数与一个或多个特定的事件关联起来。 示例记录DDL操作 定义触发器函数 CREATE TABLE ddl_log(command_text varchar(64), user_name varchar(32), command_time datetime);CREATE FUNCTION log_ddl_commands()RETURNS event_trigger LANGUAGE plpgsql AS $$ DECLAREobj record; BEGIN-- Capturing Changes at Command End FOR obj IN SELECT * FROM pg_event_trigger_ddl_commands ()LOOPINSERT INTO ddl_log (command_text,user_name,command_time,obj_name,obj_id)values(tg_tag,current_user,now(),obj.schema_name,obj.object_identity);END LOOP; END $$; 在这个例子中我们创建了一个名为log_ddl_commands的函数它会在DDL命令执行时插入一条记录到ddl_log表中。这个表需要事先创建并包含相应的列来存储命令文本、用户名和命令执行时间。 Capturing Changes at Command End pg_event_trigger_ddl_commands returns a list of DDL commands executed by each user action, when invoked in a function attached to a ddl_command_end event trigger. If called in any other context, an error is raised.pg_event_trigger_ddl_commands returns one row for each base command executed; some commands that are a single SQL sentence may return more than one row. This function returns the following columns: 创建事件触发器 CREATE EVENT TRIGGER ddl_audit_trigger ON ddl_command_end EXECUTE FUNCTION log_ddl_commands(); 在这个例子中我们创建了一个名为ddl_audit_trigger的事件触发器它会在任何CREATE TABLE、ALTER TABLE命令执行结束时调用log_ddl_commands函数。 -- 创建一个表测试事件触发器是否正确执行 superdb# create table t_event_trigger(id int); CREATE TABLE -- 查询DDL变更日志记录 superdb# select * from ddl_log;command_text | user_name | command_time | obj_name | obj_id ---------------------------------------------------------------------------------------CREATE TABLE | super | 2024-12-13 19:55:33.232567 | public | public.t_event_trigger (1 rows) -- 给表增加字段并查询DDL变更日志记录 superdb# alter table t_event_trigger add column infoname varchar(32); ALTER TABLE superdb# select * from ddl_log;command_text | user_name | command_time | obj_name | obj_id ---------------------------------------------------------------------------------------CREATE TABLE | super | 2024-12-13 19:55:33.232567 | public | public.t_event_triggerALTER TABLE | super | 2024-12-13 19:57:45.244284 | public | public.t_event_trigger (3 rows) -- 可以观察导事件触发器是否正确执行DDL变更日志已经成功插入导ddl_logProcessing Objects Dropped by a DDL Command pg_event_trigger_dropped_objects returns a list of all objects dropped by the command in whose sql_drop event it is called. If called in any other context, an error is raised. This function returns the following columns: -- 创建函数用于记录DDL删除事件日志 CREATE FUNCTION log_ddl_commands_for_drops()RETURNS event_trigger LANGUAGE plpgsql AS $$ DECLAREobj record; BEGINFOR obj IN SELECT * FROM pg_event_trigger_dropped_objects()LOOPINSERT INTO ddl_log (command_text,user_name,command_time,obj_name,obj_id)values(tg_tag,current_user,now(),obj.schema_name,obj.object_identity);END LOOP; END; $$; -- 创建事件触发器 CREATE EVENT TRIGGER ddl_audit_trigger_for_drops ON sql_drop EXECUTE FUNCTION log_ddl_commands_for_drops();-- 删除表,测试事件触发器是否正确执行 superdb# drop table t_event_trigger; DROP TABLEsuperdb# select * from ddl_log;command_text | user_name | command_time | obj_name | obj_id -------------------------------------------------------------------------------------------------------CREATE TABLE | super | 2024-12-13 19:55:33.232567 | public | public.t_event_triggerALTER TABLE | super | 2024-12-13 19:57:45.244284 | public | public.t_event_triggerCREATE FUNCTION | super | 2024-12-13 20:11:23.028464 | public | public.log_ddl_commands_for_drops()DROP TABLE | super | 2024-12-13 20:12:33.692562 | public | public.t_event_triggerDROP TABLE | super | 2024-12-13 20:12:33.692562 | public | public.t_event_triggerDROP TABLE | super | 2024-12-13 20:12:33.692562 | public | public.t_event_trigger[] (7 rows) 事件触发器的限制 事件触发器不能回滚它们所执行的操作如果触发器函数中的操作失败它不会阻止已经发生的DDL命令。由于事件触发器作用于整个数据库实例因此它们可能会对性能产生影响特别是在处理大量并发DDL操作时。 总结 事件触发器是PostgreSQL中强大的工具允许数据库管理员在数据库级别实施全局策略和执行自动化任务。通过合理使用事件触发器可以有效地提高数据库的安全性、可维护性和可操作性。
http://www.w-s-a.com/news/501899/

相关文章:

  • 织梦做的网站如何上线广东省广州市番禺区南村镇
  • 网站设计的导航栏怎么做太原有网站工程公司吗
  • 苏州虎丘区建设局网站如何在一个数据库做两个网站
  • 淘宝天猫优惠券网站建设费用腾讯邮箱企业邮箱登录
  • 深圳福田做网站公司海航科技网站建设
  • 网站降权查询wordpress更换文章背景色
  • 大型电商网站开发金融企业网站建设公司
  • 成都营销型网站建设价格化妆品品牌推广方案
  • 深圳公司手机网站制作苏州网站推广哪家好
  • 网站建设开发方式包括购买学校网站建设费计入什么科目
  • 做简单网站的框架图中小微企业查询平台
  • 哪些网站可以免费做产品推广建设建设部网站
  • 网站开发销售怎么做django做网站
  • 淘宝客网站做百度竞价万网域名怎么绑定网站
  • 建设网站找哪个公司北京知名大公司有哪些
  • 专业彩票网站开发网站流量在哪设置
  • 网站建设对应的岗位榆林做网站公司
  • 网站建设公司怎么算专业js网站分页怎么做
  • 网和网站的区别phpcms和帝国cms哪个好
  • wordpress改网站名字长沙网络营销外包
  • 宝塔怎么做第二个网站网站内容设计遵循的原则有
  • 网站违反了 google 质量指南免费ppt模版网站
  • 郑州网站建设郑州网站建设成都那家网站建设好
  • 温州网站排名优化公司如何招聘软件网站开发人员
  • 成都 网站建设公司哪家好襄阳行业网站建设
  • wordpress 调用时间做网站seo的公司哪家好
  • 手机上网站搭建网站账户系统
  • 西乡网站的建设柳州建站
  • 宁夏网站建设怎么样互联网 网站设计
  • 成都关键词seo推广平台手机端关键词排名优化软件