Oracle触发器和new、old特殊变量
:new --为一个引用最新的列值;
:old --为一个引用以前的列值; 这两个变量只有在使用了关键字 "FOR EACH ROW"时才存在.且update语句两个都有,而insert只有:new ,delect 只有:old;
系统中的触发器实例:
create or replace trigger JBPM.TIB_DEPLOYBYMOVEPAPER before //before表示在操作完成前触发, after表示在完成后触发
insert //发生插入数据操作触发
on JBPM.DEPLOYBYMOVEPAPER for each row //指定触发器每行触发一次
declare
integrity_error exception; //用户自定义错误
errno integer;
errmsg char(200);
dummy integer;
found boolean;
row_count number;
max_num deploybymovepaper.num%type; //根据表的字段定义变量类型
zero_today deploybymovepaper.num%type;
begin
-- Column "ID" uses sequence SEQUENCE_38
case
when inserting then //SQL语句只能使用:new特殊变量
select SEQUENCE_38.NEXTVAL INTO :new.ID from dual;//主键自增
zero_today :='0391'||to_char(sysdate,'yymmdd')||lpad(to_char(0),4,'0');//lpad函数定义字符串长度 为4不足时用0补全
select count(*) into row_count from deploybymovepaper;
if row_count = 0 then
max_num:=zero_today;//:=给变量赋值
else
select max(num) into max_num from deploybymovepaper;
end if;
if max_num<zero_today then
max_num:=zero_today;
end if;
if :new.num is null then
:new.num:=lpad(to_char(to_number(max_num)+1),14,'0'); //递增编号,有14为数字组成
end if;
when updating('num') then//:new、:old都可以用
if :new.num!=:old.num then
:new.num:=:old.num;
end if;
end case;
-- Errors handling
exception
when integrity_error then
raise_application_error(errno, errmsg); //抛出异常语句
end;
/
查看某个表的触发器
select * from all_triggers
where table_name =upper( 'tbname ')
转载于:https://www.cnblogs.com/zwl24/archive/2012/06/09/2542866.html
Oracle触发器和new、old特殊变量相关推荐
- oracle 触发器管理(以及行级触发器中有两个伪变量 :new 与 :old 的使用方法)(三个谓词inserting、deleting、updating的使用方法)
oracle触发器管理: 1.概念 2.建立一个简单的触发器: 3.触发器的作用 4.触发条件 a.触发事件 b.触发时间 c.触发级别 d.触发限制 e.触发对象 5.创建及使用触发器 6.触发器分 ...
- SQL server与Oracle触发器的创建与使用
SQL Server 1创建触发器 GO BEGIN IF (object_id('WMY', 'tr') is not null) DROP trigger WMY END; GO CREATE T ...
- Oracle触发器和MySQL触发器之间的区别
原文链接:http://blog.csdn.net/a19881029/article/details/37820363 --------------------------------------- ...
- Oracle 触发器(tigger)4
Oracle 触发器(tigger) 1 触发器类型 触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来启动运行.即触发器是当某 ...
- oracle 停止触发器语句,oracle触发器语句
ORACLE中触发器的判断IF语句 加一行 NULL 即可例如:SQL> DECLARE 2 testvalue INT; 3 BEGIN 4 testvalue := 200; 5 6 IF ...
- 十一、Oracle 触发器
一.Oracle 操作集 二.Oracle 数据类型 三.Oracle 函数 四.Oracle 视图 五.Oracle 序列 六.Oracle 同义词 七.Oracle 索引 八.Oracle PL/ ...
- oracle触发器输出信息,插入后oracle触发器打印
我刚开始学习触发器.我想在插入测试后给用户一个通知'插入成功'.插入后oracle触发器打印 这是我的代码. create table test (id number, name varchar2(3 ...
- oracle创建触发器的作用,Oracle触发器简介
在学习Oracle之前,我听说过触发器,但是我从未在工作中使用过触发器. 我认为触发器是一件神秘而困难的事,因此我没有认真研究它. 我了解了赵老师今晚谈论的触发因素,发现触发因素并不像我想的那样神秘. ...
- Oracle 触发器调用存储过程|转||待研究|
Oracle触发器调用存储过程资料收集整理 触发器:Trigger 存储过程:Stored Procedure // ******************** 收集1 **************** ...
- oracle触发器高级教程
[转自]http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7004.htm#i2153503 CREA ...
最新文章
- 大众可视化:精美酷炫的可视化图表,自动生成!
- php fastcgi_param,nginx-404与root指令 fastcgi_param 指令
- [云炬创业学笔记]第一章创业是什么测试4
- springboot从控制器请求至页面时js失效的解决方法
- Java并发编程实战~ReadWriteLock~
- 使用CSS按比例调整图像大小? [重复]
- apache php mysql_PHP环境搭建(php+Apache+mysql)
- 计算机无法安装dx11,Windows10系统DX11正确的安装路径是什么?
- 511遇见易语言列表框去重复项目到列表框
- 关于EnableViewState属性
- 在xml添加红色的星号android,在文本输入框中输入编辑文本(红色星号)的必填符号...
- 道法演讲之马云从事教育
- PG据库备份与恢复实验 (PITR)
- F.巴啦啦能量 【尺取法】
- SCRUM Beta Day 1
- 起源于 Kettle 的新一代数据集成平台 Apache Hop 成为 Apache 顶级项目
- python飞机大战任务报告_Python飞机大战实战项目案例
- Kotlin学习(11)→抽象类、接口、接口代理
- MySQL调优之性能分析
- Windows 也有包管理工具?
热门文章
- thinkphp 框架自动加载原理_ThinkPHP5分析Part 1 基本框架流程
- 生成随机数放入整型数组怎么判断有没有重复_图的应用(1)-连通图的最小生成树(Prim算法和Kruskal算法)...
- java飞行器服务端_使用jvisualvm和飞行记录器分析Java程序cpu占用率过高
- linux vi 强制退出_linux的编辑大法
- void slove C语言什么意思,菜鸟求助-如何用指针法将一串字符按单词的倒序输出?如:i love yo...
- vim代码格式化自动加空格_vim格式化代码实际上就是 缩进代码, 命令是等号=
- python函数注释 参数 省略号_python – make函数在help()函数中有参数的省略号
- Php如何发出请求,PHP中如何发送HTTP请求?
- python用print函数打印皮卡丘_Python学习之print()函数
- 【源资讯 第37期】一个时代的终结 —— 再见, Flash !