- 浏览: 1396518 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (346)
- linux (10)
- hbase (50)
- hadoop (23)
- java (52)
- java multi-thread (13)
- Oracle小记 (41)
- 机器学习 (12)
- 数据结构 (10)
- hadoop hive (16)
- java io (4)
- jms (1)
- web css (1)
- kafka (19)
- xml (2)
- j2ee (1)
- spring (6)
- ibatis (2)
- mysql (3)
- ext (3)
- lucene (3)
- hadoop pig (3)
- java nio (3)
- twemproxy (1)
- antlr (2)
- maven (6)
- mina (1)
- 列数据库 (1)
- oozie (2)
- mongodb (0)
- 报错 (0)
- jetty (1)
- neo4j (1)
- zookeeper (2)
- 数据挖掘 (3)
- jvm (1)
- 数据仓库 (4)
- shell (3)
- mahout (1)
- python (9)
- yarn (3)
- storm (6)
- scala (2)
- spark (5)
- tachyon (1)
最新评论
-
guokaiwhu:
赞啊!今晚遇到相同的问题,正追根溯源,就找到了博主!
hbase 报错gc wal.FSHLog: Error while AsyncSyncer sync, request close of hlog YouAr -
喁喁不止:
很清楚,有帮助。
hive常用函数 -
dsxwjhf:
Good job !!
kafka获得最新partition offset -
Locker.Xai:
参考了
freemaker教程 -
maoweiwer:
为啥EPHEMERAL_SEQUENTIAL类型的节点并没有自 ...
zookeeper 入门讲解实例 转
oracle trigger
第一个demo是最简单的trigger的实例,是表触发器
-- unit one -- table trigger 最简单的表触发器,在table名为project表insert,update,delete时触发 create or replace trigger project_trigger_name after insert or update or delete on project begin if to_char(sysdate, 'DY', 'nls_date_language=AMERICAN') in ('SAT', 'SUM') THEN dbms_output.put_line('having break now'); else case when not INSERTING then -- other condition like deleting,inserting,updating dbms_output.put_line('go to work'); else null; end case; end if; end; drop trigger project_trigger_name; -- table trigger test select * from project; insert into project(xmid, xmmc, xmbbh) values('test_20120706', '测试项目', 0); delete from project pro where pro.xmid = 'test_20120706' and pro.xmbbh = 0;
第二个demo,是行触发器(for each),可以用old,new别名取当前操作行的新旧值,行触发器是每行触发一次
并且添加行触发器的限制条件,如 when (old.xmmc = 'other name')
--unit two -- table row trigger 行触发器,
create or replace trigger project_row_trigger_name
after update of xmmc, xmid on project
for each row
when (old.xmmc = 'other name') -- add limited condition for table row trigger
begin
if inserting then
dbms_output.put_line('dead');
else
dbms_output.put_line('have a life');
end if;
if :new.xmmc = :old.xmmc then
-- use new and old can use value
dbms_output.put_line('same name update');
else
dbms_output.put_line('different name update');
end if;
end;
-- table row trigger test
update project set xmmc = 'other name' where xmid = 'test_20120706';
第三个demo,是无法运行的trigger,有错,因为在触发器里同时操作了触发条件的表project
-- unit three -- wrong table row trigger test create or replace trigger project_trigger_error after update of xmmc, xmid on project for each row -- decorate each row when (old.xmmc = 'other name') declare maxmc varchar(100); begin -- operate the table,as update table -- operate conflict select max(xmmc)into maxmc from project; dbms_output.put_line(maxmc); end;
第四个trigger 是 oracle特殊的instead of触发器
可以允许复杂视图进行DML操作:
-- unit four -- 'instead of' trigger --test for update table and view, complicated view doesn't allow to do something DML operation. select * from v_lpromis_yxgl_khxx contract where contract.ID = 'id1'; update v_lpromis_yxgl_khxx contract set contract.KHQC = '微软' where contract.ID = 'id1'; select * from contract contract; update contract contract set contract.khqc = '微软' where contract.ID = 'id1'; -- use 'instead of' trigger can do DML operation on complicated view create or replace trigger tr_instead_of_contract instead of update on v_lpromis_yxgl_khxx -- use instead of to replace after or befer for each row begin update contract contract set contract.khqc = :new.khqc where contract.ID = :new.id; end; -- test for update view after create 'instead of' trigger update v_lpromis_yxgl_khxx contract set contract.KHQC = '微软' where contract.ID = 'id1';
-- 目前还缺少系统事务,管理事务的demo,有时间一定补上来
发表评论
-
oracle报错 ora-14300:partition key maps to a partition outside maximum pemitted nu
2014-02-28 20:57 1996可能由两个原因造成 1.partition数量超过 ... -
oracle自动分区 (时间 数字)
2014-01-21 20:15 8911按照时间,每天分区 create table test_p ... -
oracle WM_CONCAT行转列
2013-08-03 16:01 1451Sql代码 ... -
oracle语法备忘-游标
2012-12-18 15:27 1111oracle的游标备忘 显示游标 declar ... -
oracle执行顺序
2012-10-31 16:17 1219看了一篇oracle执行顺 ... -
oracle语法备忘-循环
2012-10-26 15:50 1061oracle循环语句 loop while for 测 ... -
oracle 函数
2012-10-08 14:59 1002转 http://lwxjjgc.iteye.com/blog ... -
oracle 插入字符串
2012-10-08 14:16 3319一直都认为oracle有插入方法,可是没找到,就写了一个凑 ... -
oracle exception
2012-10-05 21:19 1253转 http://www.cnblogs.com/huyong ... -
oracle if else
2012-09-29 15:30 3845oracle中的if else if inst ... -
oracle 分页存储过程
2012-09-29 12:49 1374查询oracle时,做存储过程实现分页 c ... -
oracle 获取表,列注释
2012-09-28 16:23 2000前段时间,自己用的表好长,列好多(这是谁设计滴) 所以给自己 ... -
to_char
2012-09-27 11:34 0to_char转换数字 to_char(31 ... -
oracle 分区
2012-09-26 15:32 1057创建分区 --先声明一下:列表分区不支持多列,但是范围 ... -
oracle 语法备忘录
2012-09-26 14:15 0-- 游标 cursor object_cursor ... -
oracle 绑定变量
2012-09-26 12:48 1127不太喜欢看到在procedure用||拼接sql的语句 所以 ... -
jdbc insert数据后获取ID
2012-09-20 16:21 4492有时insert数据,数据ID为自动生成,需要获取ID。 ... -
Oracle生成uuid
2012-09-20 09:22 0select sys_guid() from dual; ... -
oracle 实现自增auto_increament
2012-09-19 12:53 1382在mysql中,实现字段自增,只用给他设置为auto_incr ... -
jdbc 报错 - 索引中丢失 IN 或 OUT 参数:
2012-09-19 12:45 5458jdbc 报错 - 索引中丢失 IN 或 OUT 参数: ...
相关推荐
【Oracle触发器的创建与使用】是数据库管理中不可或缺的一部分,尤其在Oracle数据库系统中,触发器扮演着关键角色。触发器是一种存储过程,当特定的数据库事件发生时(如INSERT、UPDATE或DELETE操作),它会被自动...
总之,"Oracle触发器实时调用Java中HTTP接口"是一个数据库与应用程序实时通信的示例,涉及Oracle的触发器、存储过程和UTL_HTTP包,以及Java HTTP服务器的设计和实现。这样的设计需要对Oracle PL/SQL和Java网络编程有...
### Oracle触发器Before和After应用详解 #### 引言 Oracle数据库系统中,触发器是一项核心功能,用于响应特定事件的自动执行代码块。本文旨在深入解析Oracle触发器中的Before和After两种触发时机,以及它们在...
Oracle触发器调用Java程序 Oracle触发器是Oracle数据库中的一种机制,可以在数据库中执行特定的操作。在本文中,我们将介绍如何使用Oracle触发器调用Java程序。 一、加载Java程序 首先,我们需要将Java程序加载到...
"Oracle触发器语法详解" Oracle 触发器是一种特殊的存储过程,它在插入、删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。触发器可以基于数据库的值使用户具有操作...
在深入探讨如何利用Oracle触发器备份表数据之前,我们首先需要理解几个关键概念:Oracle数据库、触发器以及备份策略。Oracle数据库是全球领先的数据库管理系统之一,以其强大的性能、可靠的安全性和丰富的功能受到...
Oracle 触发器实例讲解 Oracle 触发器是一种特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。它主要有以下几个功能: 1. 允许/限制对表的修改:触发器可以控制对表的修改操作,...
"Oracle触发器调用存储过程" Oracle触发器可以调用存储过程,以实现业务逻辑的自动化执行。然而,在触发器中调用存储过程时,需要注意事务的隔离性,以避免出现锁定和死锁的问题。Oracle自治事务(Autonomous ...
### 利用Oracle系统触发器防止误删除表操作 #### 背景介绍 在企业级应用中,数据库的安全性和稳定性至关重要。Oracle作为一款广泛使用的数据库管理系统,提供了丰富的功能来保障数据安全。其中,系统触发器是Oracle...
Oracle触发器是数据库对象之一,它在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行。触发器主要用于实现复杂的业务规则和数据验证,它们可以扩展SQL的功能,允许在数据修改前后执行一系列的动作。...
Oracle触发器(Trigger)是一种特殊的存储过程,它的执行并非由程序调用或手动启动,而是由特定的数据库事件触发,比如对表进行INSERT、DELETE或UPDATE操作时自动激活执行。触发器广泛应用于增强数据完整性约束和...
### Oracle触发器语法要点 #### 一、触发器概述 Oracle触发器是一种存储过程,它在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行。触发器可以用于实施复杂的业务规则、数据完整性检查或者自动生成...
本篇文章将探讨如何在Oracle触发器中调用Java程序,以扩展数据库的功能并利用Java丰富的库资源。 首先,我们需要了解Oracle的PL/SQL(Procedural Language/Structured Query Language)语言,它是Oracle数据库内置...
本节将深入探讨“Oracle触发器与存储过程高级编程”的相关知识。 **触发器(Triggers)** 触发器是一种数据库对象,它在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行。通过定义触发器,我们可以...
### Oracle触发器详解 在Oracle数据库管理中,触发器是一种非常强大的工具,它允许你在特定的数据库事件(如数据插入、更新或删除)发生时自动执行预定义的SQL语句或PL/SQL代码块。这使得数据库能够在无需外部程序...
根据给定的文件信息,我们将深入探讨Oracle数据库中的触发器和内置程序包,重点解析触发器的概念、创建方法以及其在数据库管理中的作用。 ### 触发器:自动化执行的存储过程 触发器是一种特殊类型的存储过程,它在...