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

在oracle中创建触发器

苏淇
2023-03-14

请帮助我解决以下问题

我需要创建一个名为trigger_contact_af_update的触发器,每当“contact”表更新时就会触发该触发器。在更新联系人详细信息之后,这个触发器将把org_name和action插入到contact_log_history表中。受影响日志表contact_log_history中的操作名称为after_update_contact

id整数org_name varchar2(255)street_address1 varchar2(255)street_address2 varchar2(255)城市varchar2(255)state varchar2(255)postal_code varchar2(255)country_code varchar2(255)last_name varchar2(255)first_name varchar2(255)person_title varchar2(255)phone_country_code integer phone_area_code integer phone_number varchar2(255)email varchar2(255)

我创建了触发器,如下所示,但在执行时,它不会返回任何错误消息,也不会创建触发器。请让我知道触发器创建中的错误/正确的语句

CREATE OR REPLACE TRIGGER trigger_contact_af_update
AFTER UPDATE
   ON contact
FOR EACH ROW
DECLARE
BEGIN
INSERT INTO contact_log_history
   (org_name,
     action)
select org_name, 'contact_log_history' 
from contact 
END;

共有1个答案

穆宏胜
2023-03-14

为什么不只使用新的更新值?您只能插入更新的新值:new.org_name,如下所示

CREATE OR REPLACE TRIGGER trigger_contact_af_update AFTER UPDATE ON contact FOR EACH ROW 
DECLARE 
BEGIN 
INSERT INTO contact_log_history (org_name, action) values (:new.org_name, 'contact_log_history');
END;
 类似资料:
  • 我试图在插入后创建一个触发器,它将更新另一个表。 这是我尝试的代码: 但我会收到以下错误消息: 1064-您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,了解使用“@qte AS integer”附近的正确语法;声明@code为整数;从INSERTED中选择@QTE=qteInv;%s“位于第4行

  • 问题内容: 当我想使用SQL Server 2008 R2的预定义“创建触发器”创建触发器时,我迷路了。您能否给我一个直接的SQL语句,我可以用它创建触发器,并告诉我如何定义AFTER,BEFORE等所有内容? 另外,我如何知道行UPDATED / INSERTED / DELETED,并使用其列值在触发器内进行操作? 问题答案: 数据库是面向集合的,触发器也不例外。当执行给定的操作时,触发器将触

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

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

  • 触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行。 因此触发器不需要人为的去调用,也不能调用。触发器的触发条件其实在定义的时候就已经设定好了。这里面需要说明一下,触发器可以分为语句级触发器和行级触发器。 触发器的基础知识和示例: Oracle之前插入触发器 - https://www.xnip.cn/oracle/before_insert.html Oracle之后插

  • 问题内容: 我想创建一个在不从现有的表中选择,而是具有插入到它的数据。当前,我正在创建一个表,然后在完成后将其删除。有没有一种方法可以有效地创建相同的对象?这是我当前的代码: 问题答案: 您可以通过从对偶中选择日期值并将它们结合在一起来创建公用表表达式(CTE,子查询分解等)。 与CTE无关,但是您可以通过使用日期文字来减少输入: