触发器执行触发器成功 但是要修改两次数据触发器才生效,求各位大神帮忙解答一下

查看:3277|回复:12
本公司的ERP软件中,仓库入库界面里一个触发器(insert)设置入库数量禁止超过指定数量,点击保存的时候,会执行触发器。可是目前软件当第一次数量输为满足触发器条件保存之后,在更改数量其不满足的数量以后,在点击保存,此时触发器都控制不到!是什么原因?求高手指点!!!!
本帖最后由 wang33126 于
19:15 编辑
怎麼想都是BUG
沒CODE是要看什麼
小微企业IT帮
一步两步 摩擦摩擦
没code 没code
SQL Server 2008 MCITP | SQL Server 2012 MCSE | SQL Server MVP | MySQL 5.6 OCP | Oracle 11g OCP
没有问题啊。
根据楼主的描述:
1. 触发器只是针对insert,在“软件当第一次数量输为满足触发器条件保存”此时不触发。
2. 没有针对update的触发器,在“更改数量其不满足的数量以后”此时也不触发。
MCITP/MCSE/MCT/MVP&&SQL Server
那些年,我们一起追过的MS SQL Server
http://jimshu.blog.51cto.com
引用:原帖由 jimshu 于
09:10 发表
没有问题啊。
根据楼主的描述:
1. 触发器只是针对insert,在“软件当第一次数量输为满足触发器条件保存”此时不触发。
2. 没有针对update的触发器,在“更改数量其不满足的数量以后”此时也不触发。 ... 那要用怎么去控制update数量之后点击保存的动作来检查更改之后的数量是否满足条件?若不满足则提示错误
引用:原帖由 wang33126 于
11:18 发表
那要用怎么去控制update数量之后点击保存的动作来检查更改之后的数量是否满足条件?若不满足则提示错误 写一个针对update的觖发器,不就解决了吗?
MCITP/MCSE/MCT/MVP&&SQL Server
那些年,我们一起追过的MS SQL Server
http://jimshu.blog.51cto.com
ALTER TRIGGER TRIGGERNAME
& &ON&&TABLENAME
& &AFTER UPDATE, INSERT, DELETE --& 要什麼事件自己加,可以複選
...........
助理工程师
小微企业IT帮
DML触发器之后,又增加了DDL触发器,可以基于数据库级和服务器级别,后来增加了基于策略的管理也基于触发器
SQL Server 2008 MCITP | SQL Server 2012 MCSE | SQL Server MVP | MySQL 5.6 OCP | Oracle 11g OCP
小微企业IT帮
参见我的博文:
SQL Server 2008 MCITP | SQL Server 2012 MCSE | SQL Server MVP | MySQL 5.6 OCP | Oracle 11g OCP
小微企业IT帮
DML触发器开始为after trigger,后又增加instead of trigger
SQL Server 2008 MCITP | SQL Server 2012 MCSE | SQL Server MVP | MySQL 5.6 OCP | Oracle 11g OCP
小微企业IT帮
触发器(Trigger)以往仅用在特定的对象上,如数据表。当数据维护语言(DML)的Insert、Delete、Update语法针对这些对象工作时,由系统自动调用对应的触发器,而在SQL Server 2000中增加了Instead of Trigger,通过触发器来取代原本要执行的添加、修改、删除语法,且可以设置在视图上。由于Instead of Trigger是在DML语法真的改变数据写入事务日志之前触发,因此,也称为Before Trigger,而我们一般编写在事务已经发生并写入日志后的触发器,则称为After Trigger。
在SQL Server 2005之后,则扩展了触发器的应用面,加入数据定义语言(DDL)触发器功能。针对DDL语法的执行,乃至于服务器实例/数据库执行相关的存储过程、事件也可以启动触发器。可用来规范、跟踪与监控数据库架构的变化,例如新建、修改或删除数据表时,要求在什么条件下允许更改数据表;记录是谁在何时对哪些数据表的定义,做了什么样的更动。如果说DML触发器是属于数据表级别的程序,那么,DDL触发器就是属于数据库级别或是服务器级别的程序,可以针对数据库等级的语法触发DDL触发器。
你可能针对数据库等级的语法触发DDL触发器,如CREATE_TABLE;也可以是服务器等级的语法,如CREATE_LOGIN,通过在触发器内执行ROLLBACK TRANSACTION语法,能够将原来用户执行的DDL语法回滚,就如同没有执行该语法一样。与DML触发器相同的是:执行一句DDL可能同时触发多个DDL触发器,但我们无法掌控其执行顺序,所以,DDL触发器间不能有先后的依存关系。
SQL Server 2008 MCITP | SQL Server 2012 MCSE | SQL Server MVP | MySQL 5.6 OCP | Oracle 11g OCP
update 触发和insert 触发的区别。这就是为什么
SQL Server DBA在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
会员表里有一个修改的触发器,只要对它进行修改,就会把这一行数据添加到新建的一张表里。有个判断条件,要是条件成立 执行sql语句修改,,就跳过触发器,求大神解决下
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
如果你的触发器还需要,而在某些时候不想使用触发器,有两种方法咯:1.是查看触发器都有哪些操作,当你某些条件成立时,再去新建的表去删除触发器生成的数据即可2.修改触发器,触发器也是可以IF ELSEIF ENDIF 的嘛,将条件写到触发器里面去
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。各位大神,帮帮忙,我写了个oracle触发器为什么只能insert不能update,delete,啊
[问题点数:40分,结帖人cxwang123]
本版专家分:0
结帖率 100%
CSDN今日推荐
本版专家分:56936
2017年 总版技术专家分年内排行榜第八
2016年10月优秀大版主优秀小版主
2017年1月 总版技术专家分月排行榜第二
2016年12月 总版技术专家分月排行榜第三
本版专家分:56936
2017年 总版技术专家分年内排行榜第八
2016年10月优秀大版主优秀小版主
2017年1月 总版技术专家分月排行榜第二
2016年12月 总版技术专家分月排行榜第三
本版专家分:0
结帖率 100%
本版专家分:0
结帖率 100%
本版专家分:9992
本版专家分:0
结帖率 100%
本版专家分:9992
本版专家分:0
结帖率 100%
本版专家分:0
结帖率 100%
本版专家分:9992
本版专家分:0
结帖率 100%
本版专家分:0
结帖率 100%
本版专家分:9992
本版专家分:0
结帖率 100%
本版专家分:0
结帖率 100%
本版专家分:9992
本版专家分:32930
2014年11月论坛优秀版主
2015年1月 Oracle大版内专家分月排行榜第一2014年12月 Oracle大版内专家分月排行榜第一2014年11月 Oracle大版内专家分月排行榜第一2014年10月 Oracle大版内专家分月排行榜第一2014年9月 Oracle大版内专家分月排行榜第一2014年8月 Oracle大版内专家分月排行榜第一
2015年5月 Oracle大版内专家分月排行榜第二2015年3月 Oracle大版内专家分月排行榜第二2015年2月 Oracle大版内专家分月排行榜第二
本版专家分:0
结帖率 100%
匿名用户不能发表回复!|
CSDN今日推荐视图,触发器,存储过程综合
时间: 00:39:19
&&&& 阅读:19
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&一、视图
1、什么是视图& & 视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。
2、为什么要用视图
使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可
3、视图特点
视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系
视图是由基本表(实表)产生的表(虚表)
视图的建立和删除不影响基本表
对视图内容的更新(添加、删除和修改)直接影响基本表
当视图来自多个基本表时,不允许添加,修改和删除数据
create view 视图名称 as SQL语句;
select * from 视图名称;
alter view 视图名称 AS SQL语句;
drop view 视图名称;
强调1、在硬盘中,视图只有表结构文件,没有表数据文件2、视图通常是用于插叙,尽量不要修改视图中的数据
二、触发器
& &在满足对某张表数据的增、删、改的情况下,自动触发的功能称之为触发器
为何要用触发器?
& &触发器专门针对我们对某一张表数据增insert、删delete、改update的行为,这类行为一旦执行就会触发触发器的执行,即自动运行另外一段sql代码
create trigger tri_after_insert_t1 after/before insert/delete/update on 表名 for each row
sql代码。。。
事件执行之后触发
before 事件执行之前触发
#触发事件 insert delete update操作,触发触发器执行
CREATE TABLE cmd (
id INT PRIMARY KEY auto_increment,
USER CHAR (<span style="color: #),
priv CHAR (<span style="color: #),
cmd CHAR (<span style="color: #),
sub_time datetime, #提交时间
success enum (‘yes‘, ‘no‘) #0代表执行失败
CREATE TABLE errlog (
id INT PRIMARY KEY auto_increment,
err_cmd CHAR (<span style="color: #),
err_time datetime
delimiter $$
create trigger tri_after_insert_cmd after insert on cmd for each row
if NEW.success = ‘no‘ then
insert into errlog(err_cmd,err_time) values(NEW.cmd,NEW.sub_time);
#当使用update语句的时候,当修改原表数据的时候相对于修改数据后表的数据来说原表中修改的那条数据就是OLD对象,
#而修改数据后表被修改的那条数据就是NEW对象
#往表cmd中插入记录,触发触发器,根据IF的条件决定是否插入错误日志
INSERT INTO cmd (
(‘egon‘,‘<span style="color: #55‘,‘ls -l /etc‘,NOW(),‘yes‘),
(‘egon‘,‘<span style="color: #55‘,‘cat /etc/passwd‘,NOW(),‘no‘),
(‘egon‘,‘<span style="color: #55‘,‘useradd xxx‘,NOW(),‘no‘),
(‘egon‘,‘<span style="color: #55‘,‘ps aux‘,NOW(),‘yes‘);
#drop trigger tri_after_insert_#delimiter $$ 操作用于将结束符号从 ‘ ;‘ 改为 ‘ $$ ‘ ,用于屏蔽掉触发器中的 ‘;‘    在触发器结尾要加上&delimiter ; ,将结束符再改回来,不影响其他代码的正常执行
三、存储过程
& & & &存储过程包含了一系列可执行的sql语句,存储过程存放于MySQL中,通过调用它的名字可以执行其内部的一堆sql。
三种开发模型:1、 &应用程序:只需要开发应用程序的逻辑& & & &mysql:编写好存储过程,以供应用程序调用
优点:开发效率,执行效率都高缺点:考虑到人为因素、跨部门沟通等问题,会导致扩展性差
2、 &应用程序:除了开发应用程序的逻辑,还需要编写原生sql& & & & mysql: 执行sql
优点:比方式1,扩展性高(非技术性的)缺点:1、开发效率,执行效率都不如方式12、编写原生sql太过于复杂,而且需要考虑到sql语句的优化问题
3、 &应用程序:开发应用程序的逻辑,不需要编写原生sql,基于别人编写好的框架来处理数据,ORM& & & & mysql:执行sql
优点:不用再编写纯生sql,这意味着开发效率比方式2高,同时兼容方式2扩展性高的好处缺点:执行效率连方式2都比不过
创建存储过程:
delimiter $$
create procedure p1(
out res int
select tname from teacher where tid & m and tid &
set res=<span style="color: #;
对于存储过程,可以接收参数,其参数有三类:
仅用于传入参数用
仅用于返回值用
既可以传入又可以当作返回值
如何用存储过程:
 1、直接在mysql中调用
set @res=<span style="color: #
call p1(<span style="color: #,<span style="color: #,<span style="color: #);
& 2、在python程序中调用
import pymysql
conn=pymysql.connect(
host=‘<span style="color: #7.0.0.1‘,
port=<span style="color: #06,
user=‘root‘,
password=‘<span style="color: #3‘,
charset=‘utf8‘,
database=‘db42‘
cursor=conn.cursor(pymysql.cursors.DictCursor)
cursor.callproc(‘p1‘,(<span style="color: #,<span style="color: #,<span style="color: #)) #@_p1_0=<span style="color: #,@_p1_1=<span style="color: #,@_p1_2=<span style="color: #
print(cursor.fetchall())
cursor.execute(‘select @_p1_2;‘)
#执行查看存储器 out 输出数据的值
print(cursor.fetchone())       #打印该输出值
cursor.close()
conn.close()
事务与存储过程的使用:
delimiter //
#将结束符号改为 ‘//‘ ,用以屏蔽sql代码块中的 ‘;‘
create PROCEDURE p5(
OUT p_return_code tinyint
# 设置一个 tinyint类型的 输出参数 p_return_code
DECLARE exit handler for sqlexception
#声明代码段捕捉sqlexception异常
set p_return_code = <span style="color: #;
# 1代表执行失败,遇到sqlexception异常
DECLARE exit handler for sqlwarning
#声明代码段捕捉sqlwarning异常
-- WARNING
set p_return_code = <span style="color: #;
# 2代表执行失败,遇到sqlwarning异常
START TRANSACTION;
update user set balance=<span style="color: #0 where id =<span style="color: #;
update user123 set balance=<span style="color: #10 where id = <span style="color: #;
update user set balance=<span style="color: #90 where id =<span style="color: #;
-- SUCCESS
set p_return_code = <span style="color: #; #0代表执行成功
#存储过程结束
#将结束符号改回 ‘;‘
&标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文地址:https://www.cnblogs.com/z/p/9281840.html
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!查看: 2496|回复: 7
写的触发器已经生效,可是没有执行begin之后的错误提示
论坛徽章:6
本帖最后由 isumsen 于
23:55 编辑
我写的这个触发器是执行已经付过款的客商账户删除给出错误提示,不让删除的。如下:
create or replace trigger delbd_custbank3
&&before delete on bd_custbank
&&for each row
&&-- local variables here
&&pk_bas char(20);
&&cursor basjob(id char) is
& & select pk_custbank
& && &from ncv5.bd_custbank /*目标数据库表*/
& &&&where pk_custbank = id
& && & and nvl(dr, 0) = 0
& && & and pk_custbank in
& && & (select bd_custbank.pk_custbank from ncv5.arap_djfb, ncv5.bd_accbank,ncv5.bd_custbank
where bd_accbank.pk_accbank = arap_djfb.skyhzh
and&&bd_accbank.pk_accbank=bd_custbank.pk_accbank);
&&/*判断数据是否在目标数据库存在*/
&&open basjob(: old.pk_custbank);
& & fetch basjob
& && &into pk_
& & exit when basjob%
&&/******************************/
&&if pk_bas is not null then
& && & raise_application_error(-20001, '已从网银付款,不能修改名称,请取消!');
end delbd_custbank3;
现在这个触发器已经生效了,在删除付过款的银行账号之后,点击保存失效,只有取消。
可是奇怪的是,raise_application_error(-20001, '已从网银付款,不能修改名称,请取消!');
没有执行,保存是时候,没有任何的错误提示。
另外,我把raise_application_error(-20001, '已从网银付款,不能修改名称,请取消!')放在begin之上,触发器就失效了。
请高手帮助看下
论坛徽章:14
不是这么写的,
&&WHEN OTHERS THEN
& && &v_value :=
& && &errormsg:=SUBSTR(SQLERRM,1,200);
& && &RAISE_APPLICATION_ERROR(-20900, 'getError' || SQLCODE);
论坛徽章:6
ziling2011 发表于
不是这么写的,
&&WHEN OTHERS THEN
不知道你是不是回复我帖子的
论坛徽章:10
&&open basjob(: old.pk_custbank);
& & fetch basjob
& && &into pk_
& & exit when basjob%
&&if pk_bas is not null then
& && & raise_application_error(-20001, '已从网银付款,不能修改名称,请取消!');
end delbd_custbank3;
论坛徽章:6
fengjin821 发表于
&&open basjob(: old.pk_custbank);
谢谢,我执行了,效果和我上面的一样,但是不能删行保存,但是仍没有错误提示。
怀疑是用友NC这个地方代码写死
论坛徽章:6
写的这个触发器就有错误提示:
create or replace trigger UPDCUSTNET
&&before update on bd_cubasdoc
&&for each row
&&-- local variables here
& &pk_bas char(20);
& &pk_custname varchar2(200);
&&/*查询目标公司是否存在基本档案*/
&&cursor basjob(id char) is
& & select pk_cubasdoc,custname
& && &from ncv5.bd_cubasdoc /*目标数据库表*/
& && & where pk_cubasdoc = id
& && & and nvl(dr, 0) = 0
& && & and&&pk_cubasdoc&&in
& && & (select bd_cubasdoc.pk_cubasdoc from ncv5.bd_cubasdoc,ncv5.arap_djfb,ncv5.bd_cumandoc
& && &&&where arap_djfb.ksbm_cl = bd_cumandoc.pk_cumandoc
& && && &and bd_cumandoc.pk_cubasdoc = bd_cubasdoc.pk_cubasdoc);
& &open basjob(:new.pk_cubasdoc);
& & fetch basjob
& && &into pk_bas,pk_
& & exit when basjob%
&&if pk_bas is not null&&then
& & if pk_custname&&:new.custname then
& && &raise_application_error(-20001,pk_custname||'已从网银付款,不能修改名称,请取消!');
end UPDCUSTNET;
未命名.jpg (69.01 KB, 下载次数: 0)
09:05 上传
论坛徽章:6
fengjin821 发表于
&&open basjob(: old.pk_custbank);
请问一下,你把错误提示放在了loop里面,我原始的语句是放在了loop外面,那个效率高?
论坛徽章:6
这是我查询到的操作删行时的debug后台代码:
[AWT-EventQueue-2] DEBUG - executeBatch sql: select distinct areaclcode,areaclname,pk_areacl,pk_fatherarea,mnecode from bd_areacl&&where 11=11&&and (pk_areacl in (select distinct power.resource_data_id from sm_power_areaclass power,sm_user u,sm_user_role urole where u.cuserid='00000XZ7' and u.cuserid=urole.cuserid&&and urole.pk_corp='0001' and urole.pk_role=power.pk_role and power.orgtypecode=1 and (power.pk_org='0001' or iscommon_power in('y','Y')))) and (pk_areacl='00000ZLK' )&&order by areaclcode
[AWT-EventQueue-2] DEBUG - executeBatch sql: select distinct doccode,docname,pk_defdoc,pk_defdoc1 from bd_defdoc&&where 11=11&&and (sealflag is null or sealflag &&'Y')&&and (pk_defdoc='ORGCORP2' )&&order by doccode
[AWT-EventQueue-2] DEBUG - enter method: nc.itf.uap.busibean.IRef.queryMainBatch([Ljava.lang.String
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.busibean.IRef.queryMainBatch write info to server spend time: 0
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.busibean.IRef.queryMainBatch read result from server spend time: 16
[AWT-EventQueue-2] DEBUG - leave method: nc.itf.uap.busibean.IRef.queryMainBatch([Ljava.lang.String, spend time: 16
[AWT-EventQueue-2] INFO - ExecBatchRefSetPk taken time:16ms.
[AWT-EventQueue-2] INFO - 单据模板加载业务数据所用时间:16 ms
[AWT-EventQueue-2] DEBUG - 开始解析公式:[copycode-&custcode, copycode1-&custcode, copyname-&custname, copyname1-&custname, tradename-&getColValue(bd_defdoc,docname,pk_defdoc,trade), custbas_code-&getColValue(bd_cubasdoc,custcode,pk_cubasdoc,pk_cubasdoc1), corp_code-&getColValue(bd_corp,unitcode,pk_corp,pk_corp1), unitname-& getColValue(bd_settleunit,settleunitname,pk_settleunit,correspondunit), areacl_name-&getColValue(bd_areacl,areaclname,pk_areacl,pk_areacl), ecotype_name-&getColValue(bd_defdoc,docname,pk_defdoc,ecotypesincevfive), pricegroupname-&getColValue(bd_defdoc,docname,pk_defdoc,pk_pricegroup)]
[AWT-EventQueue-2] DEBUG - 开始拆分解析公式....
[AWT-EventQueue-2] DEBUG - 解析公式结束!
[AWT-EventQueue-2] DEBUG - 开始从公式中取得变量...
[AWT-EventQueue-2] DEBUG - 返回公式中的变量!
[AWT-EventQueue-2] DEBUG - 开始从公式中取得变量...
[AWT-EventQueue-2] DEBUG - 返回公式中的变量!
[AWT-EventQueue-2] DEBUG - 开始取公式的值...
[AWT-EventQueue-2] DEBUG - 公式[custcode]执行结果为:[]
[AWT-EventQueue-2] DEBUG - 公式[custcode]执行结果为:[]
[AWT-EventQueue-2] DEBUG - 公式[custname]执行结果为:[上海歆瑞装饰材料有限公司]
[AWT-EventQueue-2] DEBUG - 公式[custname]执行结果为:[上海歆瑞装饰材料有限公司]
[AWT-EventQueue-2] DEBUG - getColValue参数值=[null]
[AWT-EventQueue-2] DEBUG - 公式[getColValue(bd_defdoc,docname,pk_defdoc,trade)]执行结果为:[null]
[AWT-EventQueue-2] DEBUG - getColValue参数值=[null]
[AWT-EventQueue-2] DEBUG - 公式[getColValue(bd_cubasdoc,custcode,pk_cubasdoc,pk_cubasdoc1)]执行结果为:[null]
[AWT-EventQueue-2] DEBUG - getColValue参数值=[null]
[AWT-EventQueue-2] DEBUG - 公式[getColValue(bd_corp,unitcode,pk_corp,pk_corp1)]执行结果为:[null]
[AWT-EventQueue-2] DEBUG - getColValue参数值=[null]
[AWT-EventQueue-2] DEBUG - 公式[ getColValue(bd_settleunit,settleunitname,pk_settleunit,correspondunit)]执行结果为:[null]
[AWT-EventQueue-2] DEBUG - getColValue参数值=[00000ZLK]
调试: 公司数据没下载,开始从后台查询公式SELECT
& & bd_areacl.areaclname
& & bd_areacl
& & bd_areacl.pk_areacl = ?
[AWT-EventQueue-2] DEBUG - enter method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.Object
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues write info to server spend time: 0
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues read result from server spend time: 0
[AWT-EventQueue-2] DEBUG - leave method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.Object, spend time: 0
[AWT-EventQueue-2] DEBUG - 公式[getColValue(bd_areacl,areaclname,pk_areacl,pk_areacl)]执行结果为:[上海地材类供应商名录]
[AWT-EventQueue-2] DEBUG - getColValue参数值=[ORGCORP2]
调试: 公司数据没下载,开始从后台查询公式SELECT
& & bd_defdoc.docname
& & bd_defdoc
& & bd_defdoc.pk_defdoc = ?
[AWT-EventQueue-2] DEBUG - enter method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.Object
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues write info to server spend time: 0
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues read result from server spend time: 16
[AWT-EventQueue-2] DEBUG - leave method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.Object, spend time: 16
[AWT-EventQueue-2] DEBUG - 公式[getColValue(bd_defdoc,docname,pk_defdoc,ecotypesincevfive)]执行结果为:[有限责任(公司)]
[AWT-EventQueue-2] DEBUG - getColValue参数值=[null]
[AWT-EventQueue-2] DEBUG - 公式[getColValue(bd_defdoc,docname,pk_defdoc,pk_pricegroup)]执行结果为:[null]
[AWT-EventQueue-2] DEBUG - 还原公式信息...
[AWT-EventQueue-2] DEBUG - 开始解析公式:[account-&getColValue(bd_accbank ,bankacc,pk_accbank,pk_accbank), accname-&getColValue(bd_accbank ,bankname,pk_accbank,pk_accbank), accaddr-&getColValue(bd_accbank ,address,pk_accbank,pk_accbank), memo-&getColValue(bd_accbank ,memo,pk_accbank,pk_accbank), pk_currtype-&getColValue(bd_accbank ,pk_currtype,pk_accbank,pk_accbank), currtypecode-&getColValue(bd_currtype ,currtypecode ,pk_currtype ,pk_currtype ), currtypename-&getColValue(bd_currtype ,currtypename ,pk_currtype ,pk_currtype )]
[AWT-EventQueue-2] DEBUG - 开始拆分解析公式....
[AWT-EventQueue-2] DEBUG - 解析公式结束!
[AWT-EventQueue-2] DEBUG - 开始从公式中取得变量...
[AWT-EventQueue-2] DEBUG - 返回公式中的变量!
[AWT-EventQueue-2] DEBUG - 开始从公式中取得变量...
[AWT-EventQueue-2] DEBUG - 返回公式中的变量!
[AWT-EventQueue-2] DEBUG - 开始取公式的值...
[AWT-EventQueue-2] DEBUG - getColValue参数值=[000037BN]
调试: 公司数据没下载,开始从后台查询公式SELECT
& & bd_accbank.bankacc
& & bd_accbank
& & bd_accbank.pk_accbank = ?
[AWT-EventQueue-2] DEBUG - enter method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.Object
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues write info to server spend time: 0
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues read result from server spend time: 0
[AWT-EventQueue-2] DEBUG - leave method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.Object, spend time: 0
[AWT-EventQueue-2] DEBUG - 公式[getColValue(bd_accbank ,bankacc,pk_accbank,pk_accbank)]执行结果为:[06493]
[AWT-EventQueue-2] DEBUG - getColValue参数值=[000037BN]
调试: 公司数据没下载,开始从后台查询公式SELECT
& & bd_accbank.bankname
& & bd_accbank
& & bd_accbank.pk_accbank = ?
[AWT-EventQueue-2] DEBUG - enter method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.Object
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues write info to server spend time: 0
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues read result from server spend time: 15
[AWT-EventQueue-2] DEBUG - leave method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.Object, spend time: 15
[AWT-EventQueue-2] DEBUG - 公式[getColValue(bd_accbank ,bankname,pk_accbank,pk_accbank)]执行结果为:[上海农村商业银行九亭支行]
[AWT-EventQueue-2] DEBUG - getColValue参数值=[000037BN]
调试: 公司数据没下载,开始从后台查询公式SELECT
& & bd_accbank.address
& & bd_accbank
& & bd_accbank.pk_accbank = ?
[AWT-EventQueue-2] DEBUG - enter method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.O)
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues write info to server spend time: 0
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues read result from server spend time: 0
[AWT-EventQueue-2] DEBUG - leave method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.O), spend time: 0
[AWT-EventQueue-2] DEBUG - 公式[getColValue(bd_accbank ,address,pk_accbank,pk_accbank)]执行结果为:[null]
[AWT-EventQueue-2] DEBUG - getColValue参数值=[000037BN]
调试: 公司数据没下载,开始从后台查询公式SELECT
& & bd_accbank.memo
& & bd_accbank
& & bd_accbank.pk_accbank = ?
[AWT-EventQueue-2] DEBUG - enter method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.O)
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues write info to server spend time: 0
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues read result from server spend time: 16
[AWT-EventQueue-2] DEBUG - leave method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.O), spend time: 16
[AWT-EventQueue-2] DEBUG - 公式[getColValue(bd_accbank ,memo,pk_accbank,pk_accbank)]执行结果为:[null]
[AWT-EventQueue-2] DEBUG - getColValue参数值=[000037BN]
调试: 公司数据没下载,开始从后台查询公式SELECT
& & bd_accbank.pk_currtype
& & bd_accbank
& & bd_accbank.pk_accbank = ?
[AWT-EventQueue-2] DEBUG - enter method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.O)
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues write info to server spend time: 0
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues read result from server spend time: 0
[AWT-EventQueue-2] DEBUG - leave method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.O), spend time: 0
[AWT-EventQueue-2] DEBUG - 公式[getColValue(bd_accbank ,pk_currtype,pk_accbank,pk_accbank)]执行结果为:[]
[AWT-EventQueue-2] DEBUG - getColValue参数值=[]
调试: 公司数据没下载,开始从后台查询公式SELECT
& & bd_currtype.currtypecode
& & bd_currtype
& & bd_currtype.pk_currtype = ?
[AWT-EventQueue-2] DEBUG - enter method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.O)
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues write info to server spend time: 0
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues read result from server spend time: 0
[AWT-EventQueue-2] DEBUG - leave method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.O), spend time: 0
[AWT-EventQueue-2] DEBUG - 公式[getColValue(bd_currtype ,currtypecode ,pk_currtype ,pk_currtype )]执行结果为:[CNY]
[AWT-EventQueue-2] DEBUG - getColValue参数值=[]
调试: 公司数据没下载,开始从后台查询公式SELECT
& & bd_currtype.currtypename
& & bd_currtype
& & bd_currtype.pk_currtype = ?
[AWT-EventQueue-2] DEBUG - enter method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.O)
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues write info to server spend time: 0
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.mw.MwBizEJB.findColumnValues read result from server spend time: 16
[AWT-EventQueue-2] DEBUG - leave method: nc.bs.dbcache.intf.IDBCacheBS.findColumnValues(nc.vo.dbcache.query.QueryClause,[Ljava.lang.O), spend time: 16
[AWT-EventQueue-2] DEBUG - 公式[getColValue(bd_currtype ,currtypename ,pk_currtype ,pk_currtype )]执行结果为:[人民币]
[AWT-EventQueue-2] DEBUG - 还原公式信息...
[AWT-EventQueue-2] DEBUG - enter method: nc.itf.uap.bd.cust.ICuBasDocTmp.update(nc.vo.bd.b08.CubasdocVO)
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.bd.BusiScmEJB.update write info to server spend time: 0
[AWT-EventQueue-2] DEBUG - Invoke nc.itf.uap.bd.BusiScmEJB.update read result from server spend time: 31
[AWT-EventQueue-2] DEBUG - leave method: nc.itf.uap.bd.cust.ICuBasDocTmp.update(nc.vo.bd.b08.CubasdocVO), spend time: 31
[AWT-EventQueue-2] ERROR - ORA-20001: 已从网银付款,不能修改名称,请取消!
ORA-06512: 在 &XMV502.DELBD_CUSTBANKNET&, line 26
ORA-04088: 触发器 'XMV502.DELBD_CUSTBANKNET' 执行过程中出错
java.lang.RuntimeException: ORA-20001: 已从网银付款,不能修改名称,请取消!
ORA-06512: 在 &XMV502.DELBD_CUSTBANKNET&, line 26
ORA-04088: 触发器 'XMV502.DELBD_CUSTBANKNET' 执行过程中出错
& & at nc.impl.uap.bd.cust.CustBasDocDAO.update(CustBasDocDAO.java:1375)
& & at nc.impl.uap.bd.cust.CubasdocImpl.update(CubasdocImpl.java:104)
& & at nc.impl.uap.bd.BusiScmEJB.update(BusiScmEJB.java:595)
& & at nc.itf.uap.bd.BusiScmEJBEjbBean.update(BusiScmEJBEjbBean.java:348)
& & at nc.itf.uap.bd.BusiScmEJB_Local.update(BusiScmEJB_Local.java:2332)
& & at sun.reflect.GeneratedMethodAccessor4848.invoke(Unknown Source)
& & at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
& & at java.lang.reflect.Method.invoke(Method.java:585)
& & at nc.bs.framework.server.AbstractEJBToBServiceHandler.invoke(AbstractEJBToBServiceHandler.java:79)
& & at nc.bs.framework.server.AbstractEJBToBServiceHandler.invoke(AbstractEJBToBServiceHandler.java:54)
& & at $Proxy26.update(Unknown Source)
& & at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
& & at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
& & at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
& & at java.lang.reflect.Method.invoke(Method.java:585)
& & at nc.bs.framework.comn.serv.ServiceDispatcher.invokeBeanMethod(ServiceDispatcher.java:320)
& & at nc.bs.framework.comn.serv.ServiceDispatcher.execCall(ServiceDispatcher.java:129)
& & at nc.bs.framework.comn.serv.CommonServletDispatcher.doGet(CommonServletDispatcher.java:76)
& & at nc.bs.framework.comn.serv.CommonServletDispatcher.doPost(CommonServletDispatcher.java:95)
可以看出已经生效了,只是不明白为什么不弹出错误框
itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号:10 广播电视节目制作经营许可证:编号(京)字第1149号}

我要回帖

更多关于 sql 触发器不生效 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信