首页 > 其他分享 >orcale触发器

orcale触发器

时间:2023-08-17 15:48:21浏览次数:27  
标签:触发器 插入 orcale 表中 数据 WHDTL WHSEQ

这是一个Oracle数据库触发器,用于在WHDTL表上进行INSERTUPDATE操作之前执行特定的逻辑。触发器中的逻辑会在每次插入或更新WHDTL表的行之前触发。

触发器的主要目的是在将新数据插入到WHDTL表之前,根据一些条件从其他表中检索相关的数据,并根据需要执行插入操作,以确保关联的数据的完整性。

下面是对这个触发器的各个部分的解释:

  1. 触发器头部:

    sql CREATE OR REPLACE TRIGGER "WINE"."WHDTL$BEF$MAT" BEFORE INSERT OR UPDATE ON WHDTL REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW

    这部分定义了触发器的名称(WHDTL$BEF$MAT)、触发时机(BEFORE)、操作类型(INSERTUPDATE)、作用表(WHDTL)以及对新旧数据的引用。

  2. 变量声明部分:

    sql DECLARE -- 声明一系列变量,用于存储从其他表中检索的数据或计算的结果。 BEGIN -- 触发器的逻辑将在此部分开始。 END;

    在这部分中,声明了多个变量(如V_ROBV_BLGP等),这些变量用于存储从数据库检索的数据。

  3. 数据检索部分:

    vbnet SELECT WHNO,BLTY,ROB,CORPNO,SUPNO,STFG,CRCY,EXRT,NVL(ISIMPORT,'N'),BLSUBTY INTO V_BLNO,V_BLTY,V_ROB,V_CORPNO,V_SUPNO,V_STFG,V_CRCY,V_EXRT,V_ISIMP,V_BLSUBTY FROM WH WHERE WHSEQ=NVL(:NEW.WHSEQ,:OLD.WHSEQ);

    这部分从表WH中根据特定条件检索数据,并将结果存储在之前声明的变量中。:NEW.WHSEQ:OLD.WHSEQ是对新数据和旧数据中的WHSEQ列的引用。

  4. 条件检查和数据插入部分:

    sql IF :NEW.MATID IS NULL THEN -- 在这里进行一系列条件检查和数据插入操作。 END IF;

    这部分对于不同的情况检查数据的特定列是否为空。如果某些列为空,触发器将执行一系列数据插入操作,以确保相关数据的完整性。

触发器的主要逻辑是:

  • 首先,它从其他表中检索特定条件下的数据,将结果存储在变量中。
  • 接着,它根据条件检查数据是否为空,如果为空,则从其他表中检索数据,并执行相应的插入操作来填充数据。
  • 这个逻辑涵盖了三个条件:MATIDSPECIDMATBHID,在这些条件下,如果相应的列为空,则从相关的表中检索数据并执行插入操作。

需要注意的是,这个触发器中有许多重要的数据库操作,如数据检索、条件检查、数据插入等。触发器的主要目的是确保在进行WHDTL表的插入或更新操作时,相关的数据在其他相关表中存在并保持一致。然而,要注意触发器对数据库性能和一致性的影响,以及在编写和维护触发器时需要谨慎处理的事项。

标签:触发器,插入,orcale,表中,数据,WHDTL,WHSEQ
From: https://www.cnblogs.com/Yytan-BK/p/17637764.html

相关文章

  • MySQL 之【视图】【触发器】【存储过程】【函数】【事物】【数据库锁】【数据库备份】
    一.多表联合查询 创建表和数据#多表查询语法select字段1,字段2...from表1,表2...[where条件]注意:如果不加条件直接进行查询,则会出现以下效果,这种结果我们称之为 笛卡尔乘积#查询人员和部门所有信息select*fromperson,dept笛卡尔乘积公式:A表中数据条数  *......
  • zabbix触发器标签提取监控项子字符串功能实现对应告警恢复
    0实验环境zabbix6.01监控项1.1监控项设置通过zabbixagent自定义监控项,读取某文件内容模拟日志/trap告警,测试获取触发器标签中提取子字符串功能,以及相同标签的触发器自动恢复功能。1.2手工运行手动触发之后,模拟产生如下日志数据,意为集群中node-01主机离线。07:28:29......
  • 上位机_WPF系列总结(触发器)
    当达到了出发的条件,执行设定的响应,可以是样式、数据变化、动画等。触发器的类型有:Trigger:检测依赖属性的变化,触发器生效<Window.Resources><Stylex:Key="TestStyle"TargetType="Button"><Style.Triggers><TriggerProperty="IsMou......
  • 触发器
    两类a. 语句级触发器 —— 在某些语句执行前后触发b. 行级触发器 —— 在表内的行数据有发生变化的时候触发 语法123456create[orreplace]tigger触发器名触发时间触发事件on表名[foreachrow]begin pl/sql语句end ......
  •   555定时器组成单稳态触发器
    由555定时器组成的单稳态触发器555定时器是一种模拟和数字功能相结合的中规模集成器件。一般用双极型(TTL)工艺制作的称为555,用互补金属氧化物(CMOS)工艺制作的称为7555,除单定时器外,还有对应的双定时器556/7556。555定时器的电源电压范围宽,可在4.5V~16V工作,7555可在......
  • 12-MySQL数据库的触发器
    12-MySQL数据库的触发器课程目标了解触发器简介。掌握MySQL触发器的创建和使用以及删除。12.1触发器简介触发器是一个被指定关联到一个表的数据库对象,当对一个表的特定事件(例如增、删、改、查表中记录)出现时,它将会被激活。触发器具有MySQL语句在需要时才被执行的特点,即某条(或某......
  • 555定时器组成的单稳态触发器
     555定时器是一种模拟和数字功能相结合的中规模集成器件。一般用双极型(TTL)工艺制作的称为555,用互补金属氧化物(CMOS)工艺制作的称为7555,除单定时器外,还有对应的双定时器556/7556。555定时器的电源电压范围宽,可在4.5V~16V工作,7555可在3~18V工作,输出驱动电流约为......
  • mysql 删除触发器
    MySQL删除触发器的步骤在MySQL数据库中,触发器(Trigger)是一种特殊的存储过程,它会在指定的数据库操作(例如插入、更新、删除)发生时自动执行。如果我们需要删除一个已经存在的触发器,可以按照以下步骤进行操作:步骤描述1连接到MySQL数据库2查看已经存在的触发器3删除......
  • mysql定时执行触发器
    MySQL定时执行触发器MySQL是一个流行的关系型数据库管理系统,它支持许多高级功能,其中之一是定时执行触发器。触发器是一种特殊的存储过程,当特定的数据库事件发生时自动触发执行。触发器的基本概念在MySQL中,触发器是与表关联的数据库对象。当满足触发器的定义条件时,它会自动在表上......
  • 数据库(SQL注入问题、视图、触发器、事务、存储过程、内置函数、流程控制、索引)
    SQL注入问题SQL注入的原因:由于特殊符号的组合会产生特殊的效果 实际生活中,尤其是在注册用户名的时候会非常明显的提示你很多特殊符号不能用,会产生特殊的效果。结论:涉及到敏感数据部分,不要自己拼接,交给现成的方法拼接即可。importpymysql#链接MySQL服务端conn=pymysql.......