openGauss学习笔记-43 openGauss 高级数据管理-事件触发器

2023-10-27

openGauss学习笔记-43 openGauss 高级数据管理-事件触发器

触发器会在指定的ddl事件发生时自动执行函数。目前事件触发器仅在PG兼容模式下可用。

43.1 语法格式

  • 创建事件触发器。

    CREATE EVENT TRIGGER name
        ON event
        [ WHEN filter_variable IN (filter_value [, ... ]) [ AND ... ] ]
        EXECUTE PROCEDURE function_name()
    
  • 修改事件触发器。

    ALTER EVENT TRIGGER name DISABLE
    ALTER EVENT TRIGGER name ENABLE [ REPLICA | ALWAYS ]
    ALTER EVENT TRIGGER name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
    ALTER EVENT TRIGGER name RENAME TO new_name
    
  • 删除事件触发器。

    DROP EVENT TRIGGER [ IF EXISTS ] name [ CASCADE | RESTRICT ];
    

43.2 参数说明

  • name

    事件触发器名称。

  • filter_variable

    事件触发器用来做过滤的变量(目前仅支持TAG)。

  • event

    事件触发器支持的事件,目前支持ddl_command_start、ddl_command_end、sql_drop、table_rewrite。

  • function_name

    用户定义的函数,必须声明为不带参数并返回类型为event_trigger,在事件触发器触发时执行。

  • new_name

    修改后的新事件触发器名称。

  • disable

    禁用该事件触发器。

  • ENABLE [ REPLICA | ALWAYS ]

    该事件触发器在session_replication_role为REPLICA任何取值时可用。

43.3 示例

--创建事件触发器函数(用于ddl_command_start、ddl_command_end事件)
openGauss=# create function test_event_trigger() returns event_trigger as $$
BEGIN
    RAISE NOTICE 'test_event_trigger: % %', tg_event, tg_tag;
END
$$ language plpgsql;

--创建事件触发器函数(用于sql_drop事件)
openGauss=# CREATE OR REPLACE FUNCTION drop_sql_command()
RETURNS event_trigger AS $$
BEGIN
RAISE NOTICE '% - sql_drop', tg_tag;
END;
$$ LANGUAGE plpgsql;

--创建事件触发器函数(用于table_rewrite事件)
openGauss=# CREATE OR REPLACE FUNCTION test_evtrig_no_rewrite() RETURNS event_trigger
LANGUAGE plpgsql AS $$
BEGIN
  RAISE EXCEPTION 'rewrites not allowed';
END;
$$;

--创建事件类型为ddl_command_start的事件触发器
openGauss=# create event trigger regress_event_trigger on ddl_command_start
   execute procedure test_event_trigger();

--创建事件类型为ddl_command_end的事件触发器
openGauss=# create event trigger regress_event_trigger_end on ddl_command_end
   execute procedure test_event_trigger();

--创建事件类型为sql_drop的事件触发器
openGauss=# CREATE EVENT TRIGGER sql_drop_command ON sql_drop
    EXECUTE PROCEDURE drop_sql_command();

--创建事件类型为table_rewrite的事件触发器
openGauss=# create event trigger no_rewrite_allowed on table_rewrite
  when tag in ('alter table') execute procedure test_evtrig_no_rewrite();

--执行ddl语句查看事件触发器效果(触发ddl_command_start与ddl_command_end)
openGauss=# create table event_trigger_table (a int);

--执行alter table语句查看事件触发器效果(触发ddl_command_start与table_rewrite,ddl_command_end由于禁止rewrite报错不触发)
openGauss=# alter table event_trigger_table alter column a type numeric;

--执行drop语句查看事件触发器效果(触发ddl_command_start、sql_drop与ddl_command_end)
openGauss=# drop table event_trigger_table;

--修改事件触发器
openGauss=# create role regress_evt_user WITH ENCRYPTED PASSWORD 'EvtUser123';
openGauss=# ALTER EVENT TRIGGER regress_event_trigger RENAME TO regress_event_trigger_start;
--应该失败,事件触发器的owner只能为超级用户
openGauss=# ALTER EVENT TRIGGER regress_event_trigger_start owner to regress_evt_user;
openGauss=# ALTER EVENT TRIGGER regress_event_trigger_start disable;
openGauss=# ALTER EVENT TRIGGER regress_event_trigger_start enable always;

--删除事件触发器
openGauss=# DROP EVENT TRIGGER regress_event_trigger_start;
openGauss=# DROP EVENT TRIGGER regress_event_trigger_end;
openGauss=# DROP EVENT TRIGGER sql_drop_command;
openGauss=# DROP EVENT TRIGGER no_rewrite_allowed;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

openGauss学习笔记-43 openGauss 高级数据管理-事件触发器 的相关文章

  • Linux中如何查看开启了哪些端口?

    在Linux中 端口是设备与外界通讯交流的出口 常用于指TCP IP协议中的端口 其按照端口号可以分为三类 分别是 公认端口 注册端口 动态端口 那么Linux中如何查看开启了哪些端口 以下是常用命令介绍 1 使用netstat命令 net
  • 数据采集才是MES系统的核心内容

    一 数据采集在MES管理系统中的应用 1 设备数据采集 MES管理系统通过与生产设备的连接 可以实时采集设备运行状态 产量 质量等相关数据 这有助于企业及时掌握设备运行状况 优化设备资源配置 提高设备利用率 2 工艺数据采集 MES管理系统
  • 软件开发和网络安全哪个更好找工作?

    为什么今年应届毕业生找工作这么难 有时间去看看张雪峰今年为什么这么火就明白了 这么多年人才供给和需求错配的问题 在经济下行的今年 集中爆发 供给端 大学生越来越多 需求端 低端工作大家不愿去 高端岗位又太少 很多基础行业 比如机械 土木 所
  • 如何利用CHAT做简单的总结体会?

    问CHAT 在测试过程中使用appium python自动化的优点和体会 CHAT回复 使用 Appium 配合 Python 进行自动化测试主要有以下几点优点 1 跨平台性 Appium 支持 iOS 和 Android 平台的应用自动化
  • Navicat 16 for MySQL:打造高效数据库开发管理工具

    随着数据的快速增长和复杂性的提升 数据库成为了现代应用开发中不可或缺的一部分 而在MySQL数据库领域 Navicat 16 for MySQL作为一款强大的数据库开发管理工具 正受到越来越多开发者的青睐 Navicat 16 for My
  • 【计算机毕业设计】学生就业管理系统

    如今社会上各行各业 都喜欢用自己行业的专属软件工作 互联网发展到这个时候 人们已经发现离不开了互联网 新技术的产生 往往能解决一些老技术的弊端问题 因为传统学生就业信息管理难度大 容错率低 管理人员处理数据费工费时 所以专门为解决这个难题开
  • VMware 最新版 - 虚拟机安装、激活、Centos安装、XShell 连接虚拟机、网络配置(全流程)

    目录 一 VMware 从安装到使用全流程 1 1 安装和激活 1 2 下载 Centos 镜像 以 7 为例 1 3 创建虚拟机 1 4 网络配置 1 5 验证网络是否可用 一 VMware 从安装到使用全流程 1 1 安装和激活 a 从
  • 38条Web测试经验分享

    1 页面链接检查 每一个链接是否都有对应的页面 并且页面之间切换正确 可以使用一些工具 如LinkBotPro File AIDCS HTML Link Validater Xenu等工具 LinkBotPro不支持中文 中文字符显示为乱码
  • RF自动化环境安装+自动化实例解析

    RF定义 通用型的 自动测试框架 绝大部分的软件的的自动化系统都可以采用它 特点 测试数据文件 Test Data 对应一个个的测试用例 测试数据文件里面使用的功能小模块叫关键字 由测试库 Test Library Robot Framew
  • python超详细基础文件操作【建议收藏】

    文章目录 前言 发现宝藏 1 文件操作 1 1 文件打开与关闭 1 1 1 打开文件 1 1 2 关闭文件 1 2 访问模式及说明 2 文件读写 2 1 写数据 write 2 2 读数据 read 2 3 读数据 readlines 2
  • 步骤详图 教你在linux搭建容器环境

    警告 切勿在没有配置 Docker YUM 源的情况下直接使用 yum 命令安装 Docker 1 准备工作 系统要求 要安装Docker CE 社区版 操作系统的最低要求是CentOS7 7以下版本都不被支持 卸载旧版本 Docker改版
  • 基于java的饮食分享平台系统设计与实现

    基于java的饮食分享平台系统设计与实现 I 引言 A 研究背景和动机 近年来 随着人们生活水平的提高和健康意识的增强 饮食健康已经成为越来越多人的关注焦点 因此 一个方便快捷的饮食分享平台就显得尤为重要 基于Java的饮食分享平台系统设计
  • 软件测试|SQLAlchemy环境安装与基础使用

    简介 SQLAlchemy 是一个强大的 Python 库 用于与关系型数据库进行交互 它提供了高度抽象的对象关系映射 ORM 工具 允许使用 Python 对象来操作数据库 而不必编写原生SQL查询 本文将介绍如何安装 SQLAlchem
  • 电商数据api接口商品评论接口接入代码演示案例

    电商数据API接口商品评论 接口接入入口 提高用户体验 通过获取用户对商品的评论 商家可以了解用户对商品的满意度和需求 从而优化商品和服务 提高用户体验 提升销售业绩 用户在购买商品前通常会查看其他用户的评论 以了解商品的实际效果和质量 商
  • 【计算机毕业设计】电商个性化推荐系统

    伴随着我国社会的发展 人民生活质量日益提高 于是对电商个性化推荐进行规范而严格是十分有必要的 所以许许多多的信息管理系统应运而生 此时单靠人力应对这些事务就显得有些力不从心了 所以本论文将设计一套电商个性化推荐系统 帮助商家进行商品信息 在
  • 【计算机毕业设计】趵突泉景区的智慧导游小程序_5ztvv

    当今社会已经步入了科学技术进步和经济社会快速发展的新时期 国际信息和学术交流也不断加强 计算机技术对经济社会发展和人民生活改善的影响也日益突出 人类的生存和思考方式也产生了变化 传统趵突泉景区的智慧导游采取了人工的管理方法 但这种管理方法存
  • 温室气体排放更敏感的模型(即更高的平衡气候敏感性(ECS))在数年到数十年时间尺度上也具有更高的温度变化(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • UI自动化测试之Jenkins配置

    背景 团队下半年的目标之一是实现自动化测试 这里要吐槽一下 之前开发的测试平台了 最初的目的是用来做接口自动化测试和性能测试 但由于各种原因 接口自动化测试那部分功能整个废弃掉了 其中和易用性有很大关系 另外 也和我们公司的接口业务也有关
  • 每日变更的最佳实践

    在优维公司内部 我们采用发布单的方式进行每天的应用变更管理 这里给各位介绍优维的最佳实践 变更是需要多角色合作的 而且他是整体研发流程的一部分 在优维内部 我们坚持每日变更 打通开发环节到最终发布上线的全过程 在保证质量的前提下 尽可能提升
  • Python 使用 NoSQL 数据库的优选方案

    NoSQL 数据库因其高性能 可扩展性和灵活性而风靡一时 然而 对于 Python 程序员而言 选择合适的 NoSQL 数据库可能会令人困惑 因为有多种选择可供选择 那么 哪种 NoSQL 数据库最适合 Python 呢 2 解决方案 根据

随机推荐

  • 结构化方法与面向对象方法的比较

    结构化方法与面向对象方法的比较 一 结构化方法 结构化方法 Structured Methodology 采用了系统科学的思想方法 从层次的角度 自顶向下地分析和设计系统 结构化方法包括结构化分析 Structured Analysis 简
  • 20多岁年轻人应该有多少存款?

    20多岁年轻人应该有多少存款 本人22应届专升本软件工程毕业 在专科阶段做了很多兼职 保安 销售 服务员 兼职只能够个日常开销 还记得疫情那年 我专科还没毕业 被困在家里 后面4月份解封 我就早早的跟朋友去外面找工作 找了一份快递的工作 本
  • 数据结构:Trie字符串统计

    维护一个字符串集合 支持两种操作 I x 向集合中插入一个字符串 x Q x 询问一个字符串在集合中出现了多少次 共有 N 个操作 所有输入的字符串总长度不超过 1e5 字符串仅包含小写英文字母 Trie树 高效存储和查找字符串 按树结构存
  • 机器学习实践(2.1)LightGBM分类任务

    前言 LightGBM也属于Boosting集成学习模型 还有前面文章的XGBoost LightGBM和XGBoost同为机器学习的集大成者 相比越来越流行的深度神经网络 LightGBM和XGBoost能更好的处理表格数据 并具有更强的
  • 【Transformer】2、ViT:An image is worth 16x16: transformers for image recognition at scale

    文章目录 一 背景和动机 二 方法 三 效果 四 Vision Transformer 学习到图像的哪些特征了 五 代码 代码链接 https github com lucidrains vit pytorch 论文连接 https ope
  • Android Listview 以及list view适配器

    Listview 相关监听事件以及滑动按钮 适配器 是来连接数据源和图形化界面的桥梁 数组适配器arrayadapter 集合和数组 格式简单 简单适配器simpleadapter格式复杂 使用过程 星舰 添加数据元到适配器 试图展示 si
  • JAVA中scanner方法详解

    Scanner 是 Java 中的一个比较重要的类 它的作用是用来从控制台读取输入的 它可以接收字符串 整数等类型的输入 使用方法如下 1 使用 Scanner 对象 创建 Scanner 对象并传入要接收输入的字符串 Scanner in
  • 图像边缘特征

    图像边缘是图像的重要特征 是图像中特性 如像素灰度 纹理等 分布的不连续处 图像周围特性有阶跃变化或屋脊状变化的那些像素集合 图像的边缘部分集中了图像的大部分信息 一幅图像的边缘结构与特点往往是决定图像特质的重要部分 图像边缘的另一个定义是
  • scp命令传输出现ssh: Could not resolve hostname错误

    ssh Could not resolve hostname xxxxx Temporary failure in name resolution 原因是docker导出的镜像需要离线导入 在命名的时候根据docker镜像命名带上了 导致
  • 海思3559A上编译libjpeg-turbo源码操作步骤

    1 从https github com libjpeg turbo libjpeg turbo releases tag 2 0 2 下载libjpeg turbo 2 0 2版本 2 脚本build sh内容如下 cmake DCMAKE
  • Redis五种数据结构及常用操作指令、Redis在JAVA中如何封装使用

    由于在博主的博客专栏 杂货铺实战 中的杂货铺项目中用到了Redis 那么本篇博文就针对Redis的五种数据结构以及如何在JAVA中封装使用做一个简单的介绍 文章目录 数据结构 string字符串 string字符串简介 string字符串在
  • nginx代理常见问题

    1 http200 但是返回We re sorry but XXXX doesn t work properly without JavaScript enabled Please enable it to continue 项目1 可能原
  • React.js 之筛选篇

    span style font size 14px 这个框架有听过好几次了 但自己没实现过 今天终于自己学了下 模仿写了这个过滤 妙味视频里面的 目前遇到的情况是用babel会丢失代码提示 但在浏览器中可视 划分组件 组件链接 span
  • 交叉熵损失函数优缺点_如何简单通俗的理解交叉熵损失函数?

    前面小编给大家简单介绍过损失函数 今天给大家继续分享交叉熵损失函数 直接来看干货吧 一 交叉熵损失函数概念 交叉熵损失函数CrossEntropy Loss 是分类问题中经常使用的一种损失函数 公式为 接下来了解一下交叉熵 交叉熵Cross
  • 多线程任务Rollback

    问题 多线程任务 一个任务执行错误 其他任务应该同步取消 1 主线程监视 主线程监视任务线程 当一个任务线程出现执行错误时 直接调用System exit 0 结束程序 任务线程代码 package com example thread c
  • 小程序服务器角色,小程序在我们的生活中扮演什么角色?

    原标题 小程序在我们的生活中扮演什么角色 我们给大家讲过关于小程序的相关问题 还有互联网 的相关问题 相信大家还不知道这两者之间的关系 今天我们给大家讲解一下关于小程序与互联网 的关联 我们再来回忆以下关于小程序的概念 对于用户来说 小程序
  • 应用角度看kafka的术语和功能

    kafka的术语 Terminology Topic 和Consumer Group Topic 每条发布到 Kafka 集群的消息都有一个类别 这个类别被称为 Topic 物理上不同 Topic 的消息分开存储 逻辑上一个 Topic 的
  • 入门必备小游戏之炸金花

    游戏的规则 一付扑克牌 去掉大小王 每个玩家发3张牌 最后比大小 看谁赢 牌型 豹子 三张一样的牌 如3张6 分值100 顺金 又称同花顺 即3张同样花色的顺子 如红桃 5 6 7 分值75 顺子 又称拖拉机 花色不同 但是顺子 如红桃5
  • 差分+差分矩阵(更适合新手宝宝体质)

    快速掌握差分以及差分矩阵 文章目录 快速掌握差分以及差分矩阵 前言 差分 差分的定义 官方解释 差分自定义 跟前缀和放在一起理解 差分数组的应用 题目描述 差分矩阵 与前缀和矩阵进行比较 差分矩阵定义 官方解释 自定义 修改操作 跟前缀和对
  • openGauss学习笔记-43 openGauss 高级数据管理-事件触发器

    文章目录 openGauss学习笔记 43 openGauss 高级数据管理 事件触发器 43 1 语法格式 43 2 参数说明 43 3 示例 openGauss学习笔记 43 openGauss 高级数据管理 事件触发器 触发器会在指定