当前位置: 首页 > 知识库问答 >
问题:

创建或替换触发器后滞

汲丰茂
2023-03-14

我想“创建或替换”postgres表的触发器。但是,没有这样的sql表达式。

我看到我可以先执行“DROP TRIGGER IF EXISTS”(http://www.postgresql.org/docs/9.5/static/sql-droptrigger.html).

我的问题是:

  1. 有没有比(DROPCREATE触发器)
  2. 为什么没有这样的“创建或替换触发器”(这可能意味着我不应该想要这样做)

注意oracle(https://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm)中有一个Create or Replace Trigger。然后,


共有3个答案

翟沈义
2023-03-14

您应该使用两个语句:一个用于删除触发器,另一个用于创建触发器。

例子:

DROP TRIGGER IF EXISTS my_trigger
  ON my_schema.my_table;
CREATE TRIGGER my_trigger
  BEFORE INSERT OR UPDATE
  ON my_schema.my_table
  FOR EACH ROW EXECUTE PROCEDURE my_schema.my_function();
高化
2023-03-14

Postgresql有事务DDL,所以< code>BEGIN

这是一篇关于postgre的事务性DDL与其他系统(如oracle)相比如何的精彩文章

当前有关触发器的计划功能不包括添加 REPLACE 语法。

刘令
2023-03-14

无法创建或替换触发器,但可以这样做

DROP TRIGGER IF EXISTS yourtrigger_name on "yourschemaname"."yourtablename";
 类似资料:
  • 主要内容:基本语法,创建 BEFORE 类型触发器,创建 AFTER 类型触发器触发器是与 MySQL 数据表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。 基本语法 在 MySQL 5.7 中,可以使用 CREATE TRIGGER 语句创建触发器。 语法格式如下: CREATE <触发器名> < BEFORE | AFTER > <INSERT | UPDATE | DELETE > ON <

  • 进入函数详情页,点击“触发器”标签,展示当前函数配置的触发器,点击“创建新触发器”,选择HttpTrigger,填写对应信息。 路径映射必须以“/”开头,可以选择以GET或POST方法触发函数。 创建触发器后,触发器详情页面可对触发器进行修改及删除的操作,点击下图所示图标,可以获得HTTPS URL,通过该URL在浏览器或终端直接访问,触发Hello World函数。

  • 本文向大家介绍MySQL如何创建触发器,包括了MySQL如何创建触发器的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了MySQL创建触发器的具体代码,供大家参考,具体内容如下 先来个实例: 实例解析:   先创建触发器中待存储的表t_attendance   DELIMITER $   意思是告诉mysql下文执行语句以“$”结束,如果没有这句,下面语句会出错,mysql无法判断哪句

  • 请帮助我解决以下问题 我需要创建一个名为的触发器,每当“contact”表更新时就会触发该触发器。在更新联系人详细信息之后,这个触发器将把org_name和action插入到表中。受影响日志表中的操作名称为。 id整数org_name varchar2(255)street_address1 varchar2(255)street_address2 varchar2(255)城市varchar2(

  • 我试图在插入后创建一个触发器,它将更新另一个表。 这是我尝试的代码: 但我会收到以下错误消息: 1064-您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,了解使用“@qte AS integer”附近的正确语法;声明@code为整数;从INSERTED中选择@QTE=qteInv;%s“位于第4行

  • 我试图创建一个触发器,将新插入和/或更新的记录从一个表复制到该表的历史版本。其目的是在每次插入和/或更新表中的记录时保留一条记录。 这是我拥有的创建触发器语句语法,遵循IBMDb2触发器站点。 我收到的错误是: [代码:-104,SQL状态: 42601]在N.LIFECYCLE_STATUS)之后发现了一个意外的令牌END-OF-STATEMENT。预期的令牌可能包括:""... SQLCODE