首页 > 数据库 >Oracle触发器

Oracle触发器

时间:2023-04-13 13:33:59浏览次数:33  
标签:0413 触发器 SEQ TEXT CX Oracle trigger

触发器

  • Oracle数据库对象,类似于存储过程和函数;
  • 存储过程和函数需要用户显示调用才可执行;
  • 触发器是由一个事件触发运行,当某个事件发生时会自动隐式的运行,不能被显示调用;
  • 触发器的本质是存储过程
    • 1.触发器执行的条件,即触发事件;
    • 2.执行触发器的时间,即发生事件之前before还是发生事件之后after
    • 3.触发器要做的事情,即触发器被触发以后具体执行的任务(代码块)
  • oracle数据库分为DML触发器,DDL触发器,替代触发器和系统触发器
  • DML触发器
    • 基于dml操作的触发器
      • 行级触发器:dml操作(insert,update,delete),sql语句影响多少行,触发多少次 
        • 关键字:for each row
        • 语法
           --DML触发器语法
          create or replace trigger 用户名.触发器
              before/after delete/insert/update on 表名字
              for each row [when 条件]
          declare
              定义变量
          begin
              pl/sql语句块
          end;
        • 创建行级触发器示例
           create or replace trigger TRG_CX_TEXT_SEQ_0413
            before insert on CX_TEXT_SEQ_0413
            for each row
          declare
            -- local variables here
          begin
            if inserting then
              select seq_cx_text_seq.nextval +100000 into :new.row_id from dual;
            end if;
          end TRG_CX_TEXT_SEQ_0413;
        •  
      • 语句触发器:dml操作(insert,update,delete),不管sql语句影响多少行,触发一次DML触发器
  • DDL触发器
    • 当执行ddl语句时触发,按照作用范围,分为schema trigger 和 database trigger
    • schema trigger 作用在一个用户上
    • databse trigger作用在整个数据库所有用户上
    • 常用的DDL触发器
      • grant 授权
      • revoke 撤销授权
      • create 创建
      • drop 删除
      • alter 修改
      • comment 注释
      • audit 审核
      • rename 重命名
      • 语法
         create or replace trigger 用户名.trigger
            before/after ddl事件 on database/schema
            when 条件
        declare
            定义变量
        begin
            pl/sql块
        end;
  • /--备份表
    CREATE TABLE CX_TEXT_SEQ_0413 AS SELECT * FROM CX_LOGIN_HISTORY
    SELECT * FROM CX_TEXT_SEQ_0413  WHERE ROW_ID = 40 FOR UPDATE
    -- 删除触发器
    DROP TRIGGER TRG_CX_TEXT_SEQ_0413
    --设置触发器失效/生效
    ALTER TRIGGER TRG_CX_TEXT_SEQ_0413 DISABLE/ENABLE
    --删除序列
    DROP SEQUENCE SEQ_CX_TEXT_SEQ
    --删除表
    DROP TABLE CX_TEXT_SEQ_0413

     

标签:0413,触发器,SEQ,TEXT,CX,Oracle,trigger
From: https://www.cnblogs.com/DragonJack/p/17312684.html

相关文章

  • oracle中if/else的三种实现方式详解
    oracle中if/else的三种实现方式详解1、标准sql规范1、单个IFIFv=...THENENDIF;2、IF...ELSEIFv=...THENELSEt....;ENDIF;3、多个IFIFv=...THENELSIFv=...THENt...;ENDIFL注意:多个IF的是'ELSIF'不是'ELSEIF'2、decode函数DECODE(VALUE,IF......
  • Oracle创建序列
    创建序列语法:CREATESEQUENCE序列名;--示例createsequenceSEQ_CX_TEXT_SEQ;----CreatesequencecreatesequenceSEQ_CX_TEXT_SEQminvalue1maxvalue9999999999999999999999999999startwith1incrementby1cache20;--如果指定cache,oracle预先在内存中放置......
  • XXL-JOB定时任务框架(Oracle定制版)
    特点xxl-job是一个轻量级、易扩展的分布式任务调度平台,能够快速开发和简单学习。开放源代码并被多家公司线上产品使用,开箱即用。尽管其确实非常好用,但我在工作中使用的是Oracle数据库,因为xxl-job是针对MySQL设计的,所以使用起来需要进行一些魔改。为了方便后人使用,我已经创建了许......
  • 漏洞-Oracle MYSQL Server 安全漏洞(CVE-2022-1292)
    https://blog.csdn.net/weixin_45839894/article/details/126158078openssl:relocationerror:openssl:symbolEVP_mdc2versionOPENSSinedinfilelibcrypto.so.1.1withlinktimereference建议先删掉/usr/bin/openssl......
  • oracle 常用数据字典表说明
    常用数据字典表数据字典表是oracle存放数据库信息的地方,其用途是用来描述数据的。数据字典表分类数据字典主要可分为四部分(1)内部RDBMS表:x$,用于跟踪内部数据库信息,维持DB的正常运行。是加密命名的,不允许sysdba以外的用户直接访问,显示授权不被允许。(2)数据字典表:$,如tab......
  • 如何将oracle.sql.TIMESTAMP 转换为 java date
    privateStringgetDate(Objectvalue){Timestamptimestamp=null;try{timestamp=(Timestamp)value;}catch(Exceptione){timestamp=getOracleTimestamp(value);}if(timestamp!=null)return(newSimpleDateFormat("yyyy-MM-ddHH:mm:ss.S&......
  • 在 Oracle 中查找 CPU 使用最多的会话或 SQL 查询
    Oracle中的前10个CPU消耗会话colprogramforma30heading"Program"colCPUMinsform99990heading"CPUinMins"selectrownumasrank,a.*from(SELECTv.sid,sess.Serial#,program,v.value/(100*60)CPUMinsFROMv$statnames,v$sess......
  • 视图,触发器,存储过程
    目录一、视图1、什么是视图2、为什么要用视图3、如何用视图二、触发器1、为何要用触发器2、创建触发器语法3、实际应用三、存储过程1、介绍2、创建简单存储过程(无参)3、创建存储过程(有参)4、如何用存储过程5、查看存储与删除存储6、存储过程与事务使用举例(了解一、视图1、什么是......
  • Oracle SQL优化之STA(SQL Tuning Advisor)
    前言:经常可以碰到优化sql的需求,开发人员直接扔过来一个SQL让DBA优化,然后怎么办?当然,经验丰富的DBA可以从各种方向下手,有时通过建立正确索引即可获得很好的优化效果,但是那些复杂SQL错综复杂的表关联,却让DBA们满头大汗。如下特别介绍一种oracle官方提供的科学优化方法STA,经过实践,不......
  • oracle启动监听后提示no services的解决办法
    0x00问题经常安装完后,dbca建库,netca增加监听后,命令行提示:Thelistenersupportsnoservices0x01解决方法altersystemsetlocal_listener="(address=(PROTOCOL=TCP)(HOST=你的IP地址)(PORT=1521))";altersystemregister;0x02查看监听lsnrctlstatus0x0......