首页 >

ORA-04091和Compound Trigger(Oracle 11g)

数据库|mysql教程ORA-04091和Compound Trigger(Oracle 11g)
ORA-04091,ORA-04091和Compound T
数据库-mysql教程
源码下载区别,ubuntu2.6内核,tomcat读取哪的文件,设计爬虫工具,邮箱正则php,深圳抖音搜索seo排名优化lzw
ORA-04091和Compound Trigger(Oracle 11g)
贝壳粉网站源码,Vscode默认打开位置,.ova导入ubuntu,tomcat部署多个服务,agent 爬虫,php 微信 xml,南阳seo建设公司,简洁网站导航页源码,模板之家dwlzw
仿堆糖源码,新手怎么安装vscode,ubuntu卸载蓝牙,tomcat多端口作用,滑块 爬虫,php 框架核心,深圳seo快排软件,整站网站模板 论坛,商城jsp模板下载lzw

首页 → 数据库技术

背景:

阅读新闻

ORA-04091和Compound Trigger(Oracle 11g)

[日期:2013-12-14]
来源:Linux社区
作者:chncaesar
[字体:]

Trigger

常见有两种:行(Row Trigger)和语句(Statement Trigger)

还有:Instead of Trigger和Event trigger。

例子1-Row Trigger:

CREATE OR REPLACE TRIGGER client AFTERINSERT ON tt1 FOR EACH row

BEGIN

dbms_application_info.set_client_info(userenv(‘client_info’)+1 );

END;

例子2-Statement Trigger

CREATE OR REPLACE TRIGGER client_1 AFTERINSERT ON tt1

BEGIN

dbms_application_info.set_client_info(userenv(‘client_info’)-1 );

END;

ORA-04091错误
Tom Kyte有一篇文章很好的解释了ORA-04091。

部分摘抄如下:

Suppose wehave a table that includes country currency combinations with a primarycurrency. The following is sample data:

CountryCurrency Primary_Currency

US USD Y

US USN N

US USS N

We need toenforce the rule that at most one currency can be primary for a given country.We have a BEFORE UPDATE trigger on the above table for each row (usingautonomous transaction to avoid the mutating error) to check whether thecountry has any primary currency.

That was allI needed to read. I knew they had a serious bug on their hands when Iread—paraphrasing:

At most one currency can be primary (we have a constraint that crosses rows in the table).
We have a . . . trigger.
We are using an autonomous transaction to avoid the mutating table error.

The trigger would have looked something like this:

SQL< create or replace

2 trigger currencies_trigger

3 before update on currencies

4 for each row

5 declare

6 PRAGMA AUTONOMOUS_TRANSACTION;

7 l_cnt number;

8 begin

9 select count(*)

10 into l_cnt

11 from currencies

12 where primary_currency=’Y’

13 and country = :new.country;

14 if ( l_cnt < 1 )

15 then

16 raise_application_error

17 (-20000, ‘only one allowed’);

18 end if;

19 end;

20 /

0

Oracle EBS R12 for Linux安装

MySQL使用Federate引擎实现操作本地表映射远程操作表

相关资讯
ORA-04091

Oracle变异表触发器中ORA-04091错 (11/25/2013 10:26:56)
Oracle触发器给表自身的字段重新赋 (07/08/2013 13:57:10)

图片资讯

本文评论
查看全部评论 (0)

评论声明

最新资讯

本周热门

Linux公社简介 – 广告服务 – 网站地图 – 帮助信息 – 联系我们
本站(LinuxIDC)所刊载文章不代表同意其说法或描述,,仅为提供更多信息,也不构成任何建议。

Copyright © 2006-2011 Linux公社 All rights reserved 浙ICP备06018118号


ORA-04091和Compound Trigger(Oracle 11g)
  • Oracle变异表触发器中ORA-04091错误原因及解决方案
  • Oracle变异表触发器中ORA-04091错误原因及解决方案 | Oracle变异表触发器中ORA-04091错误原因及解决方案 ...

    ORA-04091和Compound Trigger(Oracle 11g)
  • 关于ORA-04091异常的出现原因,以及解决方案
  • 关于ORA-04091异常的出现原因,以及解决方案 | 关于ORA-04091异常的出现原因,以及解决方案 ...

    ORA-04091和Compound Trigger(Oracle 11g)
  • ORA-04091:触发器/函数不能读
  • ORA-04091:触发器/函数不能读 | ORA-04091:触发器/函数不能读 ...