首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Postgres中有没有定义好的函数可以让你知道是什么动作触发了触发器?

在PostgreSQL中,可以使用特殊的内置函数来确定触发器是由什么动作触发的。这个函数是TG_OP,它返回触发器的操作类型。

TG_OP函数返回的操作类型包括以下几种:

  • INSERT:表示触发器是由INSERT操作触发的。
  • UPDATE:表示触发器是由UPDATE操作触发的。
  • DELETE:表示触发器是由DELETE操作触发的。
  • TRUNCATE:表示触发器是由TRUNCATE操作触发的。

通过在触发器中使用TG_OP函数,可以根据不同的操作类型执行相应的逻辑。例如,可以在触发器中使用条件语句来根据不同的操作类型执行不同的操作。

以下是一个示例触发器,演示了如何使用TG_OP函数来确定触发器的操作类型:

代码语言:txt
复制
CREATE OR REPLACE FUNCTION trigger_function() RETURNS TRIGGER AS $$
BEGIN
    IF TG_OP = 'INSERT' THEN
        -- INSERT操作触发的逻辑
        RAISE NOTICE 'Trigger is fired by INSERT operation';
    ELSIF TG_OP = 'UPDATE' THEN
        -- UPDATE操作触发的逻辑
        RAISE NOTICE 'Trigger is fired by UPDATE operation';
    ELSIF TG_OP = 'DELETE' THEN
        -- DELETE操作触发的逻辑
        RAISE NOTICE 'Trigger is fired by DELETE operation';
    ELSIF TG_OP = 'TRUNCATE' THEN
        -- TRUNCATE操作触发的逻辑
        RAISE NOTICE 'Trigger is fired by TRUNCATE operation';
    END IF;
    
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER my_trigger
AFTER INSERT OR UPDATE OR DELETE OR TRUNCATE ON my_table
FOR EACH ROW
EXECUTE FUNCTION trigger_function();

在上述示例中,当触发器被触发时,根据TG_OP函数返回的操作类型,会打印相应的提示信息。

对于PostgreSQL中的触发器和相关概念,可以参考腾讯云的产品文档:PostgreSQL触发器

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

postgresql 触发器 简介(转)

触发器函数返回类型为trigger, 如果需要给触发器函数传入参数, 不能定义触发器函数参数列表中, 而是通过其他方式传入(TriggerData数据结构)....触发器函数返回类型是什么? 触发器函数返回值是否会影响下一个触发器函数或者被操作数据? NEW 或者OLD record修改后会带来什么影响? 哪些触发器函数返回值没有意义?...– 前面的例子已经知道, for each statement返回值对行值以及for each row触发器没有影响. 所以下面的例子都是针对for each row....哪些触发器函数返回值没有意义? – for each statement触发器函数返回值没有意义, 不会造成任何影响....不管是返回NULL还是HeapTuple都无意义, 所以返回NULL就可以了. – after for each row 触发器函数返回值也没有意义, 不会造成任何影响.

3.9K20

零基础“复刻”经典飞机大战小程序游戏【一篇文使用 IVX 轻松实战5】

1_bit:IVX 还可以做小游戏呢,知道吗? 小媛:还可以做?我刚刚拒绝了一个同学叫我做小游戏,说给我1000。 1_bit:是的呢,小程序也可以做。 小媛:那你教我做小游戏好不?...1_bit:然后在动作选择对象箭头,然后再点击我们需要操作角色。 小媛:方便呀。 1_bit:然后我们就开始对这个需要操作对象进行动作逻辑设置。...1_bit:这个是我们就需要使用一个叫做触发器组件了。子弹是自动发射,可能时间间隔是 0.3 秒,那么我们可以设置触发器间隔一定时间后去做一个动作,这个动作就是创建子弹。...1_bit:在触发器中点击事件,在事件中动作对象选择为对象组,选择对象组动作为创建对象。 小媛:这样就可以创建出那个子弹了吧?...小媛:明白了,然后再添加一个动作那个击落数量文本值就等于击落数量变量就可以了。

97310
  • 进阶数据库系列(十):PostgreSQL 视图与触发器

    name:#要创建视图名字(可以是模式限定)。 column_name:#要用于视图列名称列表,可选。如果没有给出,列名会根据查询推导。...如果一个自动可更新视图被定义在一个具有 INSTEAD OF 触发器基视图之上,那么 LOCAL CHECK OPTION 可以被用来检查该自动可更新视图之上条件,但具有 INSTEAD OF...可以通过在该视图上创建一个 INSTEAD OF 触发器来获得可更新视图效果,该触发器必须把该视图上尝试插入等转换成其他表上合适动作。...PostgreSQL 触发器 什么是触发器触发器函数 触发器:一个触发器是一种声明,告诉数据库应该在执行特定操作时执行特定函数触发器函数:是指一个没有参数并且返回trigger类型函数。...; 创建一个自定义触发器函数,此函数主要是为了更新当前时间。

    1K10

    为什么说PostgreSQL是最先进关系型数据库?

    一、PostgreSQL是什么? PostgreSQL是一种开源关系型数据库管理系统,也被称为Postgres。...可扩展性:PostgreSQL支持分布式架构,并且具有良好扩展性,用户可以轻松地添加新数据类型、函数、操作符和索引等。...备份和恢复:PostgreSQL具有强大备份和恢复功能,能够恢复各种故障情况下数据。 可定制性:PostgreSQL具有高度可定制性,用户可以根据需要添加自定义函数、类型和运算符等。...更好可定制性:PostgreSQL具有更高可定制性,允许用户根据需求添加自定义函数、类型和运算符等。 高度兼容:PostgreSQL符合SQL标准,同时也具有对其他数据库兼容性。...综上,PostgreSQL是一种功能强大、可靠性高、安全性、可扩展性强、可定制性高开源数据库系统,适用于各种规模和复杂度应用场景。

    1.7K20

    Citus 11 for Postgres 完全开源,可从任何节点查询(Citus 官方博客)

    无需更改应用程序: 您应用程序可以继续将您 Postgres 查询路由到 Citus 协调器,就像您一直做那样,并 Citus 确定如何分发查询。...这种方法缺点是表分片过多,并且由于没有明确定义分布列,许多关系特性不可用。从 Citus 11.0 开始,现有的附加分布式表将是只读。我们建议切换到哈希分布表。...当插入、更新或删除行时,触发器函数可以对数据库执行其他操作。由于所有 Citus 节点现在都有元数据,分布式表分片上触发器现在可以从存储分片工作节点对其他分布式表执行操作。...Citus 触发器方法可以很好地扩展,因为 Postgres 触发器调用被下推到每个分片。然而,Citus 目前无法知道触发器函数会做什么,这意味着它可以做一些导致事务问题事情。...,使用 Citus 触发器为您提供了一种利用自动 schema 和 metadata 同步方法,而不必在节点之间进行负载均衡查询。

    1K20

    设计模式 | 观察者模式

    这是一个非常经典设计模式, 解决了不少问题, 在实际项目中应用比较广泛。 先简单说一下设计模式定义: 一旦主体对象状态发生改变,与之关联观察者对象会收到通知,并进行相应操作。..., 大家都知道, 今年猪肉价格人有望而却步, 原本就不富裕家庭更是雪上加霜, 我有个想法就是, 这个超市猪肉价格一降价就通知我, 我能及时以较低价格购买。...可以随便通知任何人, 也可以移除观察者 但是每个想观察对象都要写这个函数 有点重复 * 我们可以抽离出来 */ class ObserverUtil implements Observable...还是什么乱七八糟 都要方便很多了 观察者模式在实际项目的应用中非常常见,比如你到 ATM 机器上取钱,多次输错密码,卡就会被 ATM 吞掉,吞卡动作发生时候,会触发哪些事件呢?...使用观察者模式也有两个重点问题要解决: 广播链问题 如果做过数据库触发器就应该知道有一个触发器问题,比如表 A 上写了 一个触发器,内容是一个字段更新后更新表 B 一条数据,而表 B 上也有个触发器

    43120

    Oracle转换Postgres

    3、语法差异 PG中有少数语法不同但功能相同SQL。ACS/pg会自动进行转换,只有大部分函数不同,需要手工进行转换。这个工作由db_sql_prep来完成。...Postgsql中可以将FROM子句丢弃。可以postgres中创建一个视图作为这个表从而消除上述问题。这样就可以在不干扰Postgres解析器情况下兼容OracleSQL。...Postgres没有这样结构,但是可以使用下面格式替代: CASE WHEN expr THEN expr [...]...查询:SELECT a.field1, b_sum_field2_by_item_id (a.item_id) FROM a,此时可以定义函数: CREATE FUNCTION b_sum_field2...因此,只实现了ACS使用BLOB功能。 为了使用BLOB驱动扩展,首先需要创建一个表,其lob列定义为interger类型,再创建一个触发器on_lob_ref。

    8.2K30

    Oracle转换Postgres

    Oracle转换Postgres 1、前提 首先需要对Oracle和PostgreSQLSQL都比较熟悉。对其理解越详细就越具有优势,本文帮助读者迅速理解这两类SQL区别是什么。...3、语法差异 PG中有少数语法不同但功能相同SQL。ACS/pg会自动进行转换,只有大部分函数不同,需要手工进行转换。这个工作由db_sql_prep来完成。...Postgres没有这样结构,但是可以使用下面格式替代: CASE WHEN expr THEN expr [...]...查询:SELECT a.field1, b_sum_field2_by_item_id (a.item_id) FROM a,此时可以定义函数: CREATE FUNCTION b_sum_field2...因此,只实现了ACS使用BLOB功能。 为了使用BLOB驱动扩展,首先需要创建一个表,其lob列定义为interger类型,再创建一个触发器on_lob_ref。

    5.8K00

    【十分钟】学会微信小游戏,攀登不止小游戏制作(IVX 快速开发教程十一)

    我们此节需要完成小游戏需求为: 小球碰矩形块会跳跃或攀爬 小球碰顶部或底部游戏结束 点击屏幕将会使小球朝着该方向移动 小球进行跳跃时分数会增加 矩形块在游戏运行过程中自动下沉 游戏结束停止游戏出现按钮可以重新开始游戏...设置之后我们在物理世界中创建一个触发器,用触发器定时响应跳跃内容: 接下来我们点击触发器,使其能够进行自动播放: 对该触发器设置一个事件,事件触发后开始判断当前物体值是不是排除外目标...,其有辨识度: 接下来在对应矩形事件中,将对碰矩形变量赋值动作值按照橙色矩形块目标值为2、蓝色矩形块目标值为3、绿色矩形块目标值为4 规则进行修改,在此以橙色矩形块事件为例:...,当小球进行一次跳跃时我们就为其分数加一: 在触发器小球跳跃事件中,添加动作将分数进行增加: 我们再到前台中创建两个文本,用于分数显示,并且在分数增加动作中设置一个文本内容为分数变量值...: 此时为了方便给玩家知道当前排除组件,我们在触发器中设置几个条件,当排除组件值等于 1、2、3、4值时给与底部矩形块一个颜色值,使其可以用作提示: 11.6 设置碰底部游戏结束 当小球掉到底部时游戏提示游戏结束

    1.3K30

    我被微服务坑掉了CTO职位

    但很遗憾,当时我们根本没听说过 Supabase——现在屏幕前知道了,它也许能改变创业故事。 如果用上了 Supabase,我们来看看原本架构会发生怎样变化。...Notifications 我们可以用 Supabase 提供表上无服务器函数触发器,顺利替代当初设置 Push、SMS 和 Email 通知微服务。...表上触发器将自动调用无服务器函数以发出推送通知。...marketing_campaigns for each row execute function insert_marketing_campaign(); Admin studio 回想起来,为企业客户专门构建自定义管理门户可能也不是什么好主意...单从技术上讲,我们本可以用无服务器函数触发器来替代,但我还是选择用老办法。原因是我这人就这样,比较敏感守旧。

    90020

    Zabbix 3.4快速入门到精通教程

    如果收到数据超过了这个定义级别,触发器将被“触发”,或者进入“异常(Problem)”状态——从而引起我们注意,让我们知道有问题发生。...此处,监控项值(system.cpu.load)用于指出具体监控项。这个特定表达式大致是说如果3分钟内,CPU负载平均值超过2,那么就触发了问题阈值。可以查看更多触发器表达式语法信息。...一旦满足这个条件: 在监控(Monitoring) → 触发器(Triggers)中,会看到这个触发器状态呈现一个绿色闪烁'Problem' e-mail中,会收到一个异常通知 如果通知功能没有正常工作...另外,可以在报告(Reports) → 动作日志(Action log)中检查动作日志。 6 新建模版 添加模版 开始使用模版,必须先创建一个。...新建模版可以在模版列表中查看。 可以在这看到模版信息。但这个模版中没有任何信息——没有监控项、触发器活着其他对象。

    96110

    我被微服务坑掉了CTO职位

    但很遗憾,当时我们根本没听说过 Supabase——现在屏幕前知道了,它也许能改变创业故事。 如果用上了 Supabase,我们来看看原本架构会发生怎样变化。  ...Notifications 我们可以用 Supabase 提供表上无服务器函数触发器,顺利替代当初设置 Push、SMS 和 Email 通知微服务。...表上触发器将自动调用无服务器函数以发出推送通知。...marketing_campaignsfor each rowexecute function insert_marketing_campaign();Admin studio 回想起来,为企业客户专门构建自定义管理门户可能也不是什么好主意...单从技术上讲,我们本可以用无服务器函数触发器来替代,但我还是选择用老办法。原因是我这人就这样,比较敏感守旧。

    75130

    什么是PostgreSQL?跟MySQL、Oracle比强在哪?

    PostgreSQL数据库提供了丰富接口,可以很方便地扩展它功能,如可以在GiST框架下实现自己索引类型,支持使用C语言写自定义函数触发器,也支持使用流行编程语言写自定义函数。...日本电报电话公司(NTT)大量使用PostgreSQL替代Oracle数据库,并且在 PostgreSQL之上二次开发了Postgres-XC,Postgres-XC是对使用者完全兼容PostgreSQL...性能优化工具与度量信息丰富 PostgreSQL数据库中有大量性能视图,可以方便地定位问题(比如可以看到正在执行SQL,可以通过锁视图看到谁在等待,以及哪条记录被锁定等)。...在线操作功能 PostgreSQL增加空值列时,本质上只是在系统表上把列定义上,无须对物理结构做更新,这就让PostgreSQL在加列时可以做到瞬间完成。...在数据库中使用PostgreSQL感觉就像在开发语言中使用Python,会工作变得简洁和高效。 2. PostgreSQL与Oracle数据库对比 ?

    5.8K10

    探索SQL Server元数据(二)

    那么如何找到触发器数据?   以sys.system_viewsis表开始。让我们查询出数据库中使用触发器信息。可以告知当前SQL Server版本中有什么触发器。...触发器有时候会有些微妙地方其出问题,比如,当导入过程中禁用了触发器,并且由于某些原因他们没有重启。...因此我们现在知道了表有哪些触发器,哪些事件触发这些触发器可以使用objectpropertyex()元数据函数,这个函数返回很多不同信息,根据指定参数不同。...让我们看一下这些触发器,DML触发器可以在所有其他时间发生后触发,但是可以在约束被处理前并且触发INSTEAD OF触发动作。...我们在sys.SQL_modules中搜索了所有的定义可以找到一个特定字符串,这种方式很慢很暴力,但是它是有效! 在所有对象中搜索字符串 我想知道除了触发器之外是否还有其他对象调用这个过程?

    1.6K20

    使用数据库编程在PostgreSQL上构建石头剪刀布游戏

    为什么函数触发器和视图很少使用? 现代数据库不仅仅是一个带有附加查询引擎存储层。使用触发器函数、存储过程、约束 和视图,可以构建整个应用程序,而无需离开数据库。...一个典型例子是维护数据库更改一致、正确和持久审计日志。这项任务使用触发器函数 可以轻松实现,但在应用程序层实现时会变得更加困难。...接下来,让我们定义游戏中逻辑核心部分,决定谁赢得任何特定回合。使用 Postgres 函数来封装此逻辑。...,该函数代表我们电脑对手选择一个随机动作,以及我们游戏首要函数:play。...现在,拥有一个完全可用石头剪刀布游戏,它运行在你 Postgres 数据库上。

    12410

    zabbix-3.4-快速入门 原

    如果收到数据超过了这个定义级别,触发器将被“触发”,或者进入“异常(Problem)”状态——从而引起我们注意,让我们知道有问题发生。...此处,监控项值(system.cpu.load)用于指出具体监控项。这个特定表达式大致是说如果3分钟内,CPU负载平均值超过2,那么就触发了问题阈值。可以查看更多触发器表达式语法信息。...一旦满足这个条件: 在监控(Monitoring) → 触发器(Triggers)中,会看到这个触发器状态呈现一个绿色闪烁'Problem' e-mail中,会收到一个异常通知 如果通知功能没有正常工作...另外,可以在报告(Reports) → 动作日志(Action log)中检查动作日志。 ? 6 新建模版 添加模版 开始使用模版,必须先创建一个。...新建模版可以在模版列表中查看。 ? 可以在这看到模版信息。但这个模版中没有任何信息——没有监控项、触发器活着其他对象。

    68520

    云开发定时触发器_python抢手机脚本

    大家,又见面了,我是你们朋友全栈君。...文章目录 一、在哪用 二、怎么用 三、问题 四、摸索 五、关于cmswebhook 六、我对触发器函数文件夹架构想法 小结 微信开发文档对这个部分使用资料很少,一个demo都没有,全靠开发者去尝试...像我们熟悉mysql或者pg…一样,触发条件之后都会调用触发器函数,也就是上面执行动作。 重要触发器函数编写。 这里执行动作可以设定触发频率,这个按照需求使用即可。...三、问题 触发器函数是当数据库集合满足条件时自动触发,在做一些复杂触发器业务逻辑时候,我们需要知道是数据库哪一条数据发生了改变。...也就是说,我们应该看看,在触发器函数执行时候,系统给它传了什么值。也就是event里面是什么

    74650

    零停机迁移 Postgres正确方式

    Bucardo 工作机制 Bucardo 充当两个 Postgres 实例之间中间人。可以 Bucardo 在你喜欢任何机器上运行,只要它可以访问源数据库和目标数据库即可。...当发生更改时,触发器会将所有受影响主键添加到 Bucardo 实例 Postgres“delta”表,另一个触发器将“启动(kick)”同步。...需要小心对待冲突处理方式,以免客户遇到问题。 Bucardo 支持自定义解析策略。可以根据业务需求制定自己策略,但这很快就会变得过于复杂和耗时。...需要为 Bucardo 对象定义描述性名称并指定排除表或略过此选项。在你了解脚本作用后可以继续运行它。...将所有应用切换到新数据库后,可以停止 Bucardo 同步并下线它机器。应该再次运行 uninstall_bucardo.sh 以便从触发器清理你新数据库。

    1.4K20
    领券