因为Oracle规定,触发器中不能进行任何事务操作,
任何对被触发表进行操作的事务都将失败,
所以触发器中不能有Commit
任何对被触发表进行操作的事务都将失败,
所以触发器中不能有Commit
解决方案 »
- 那位兄弟姐妹帮忙下 Oacle 数据库怎么建立数据库建库的脚本的是什么!?
- 咨询关于拆分文字查询的问题(类似百度/google)
- 在异地的两个oracle数据库如何实现同步更新、插入、修改、册除、表结构,单向,双向修改都行??
- select出cursor
- oracle 两个数据库间读取数据
- sql *plus的连接问题
- 如何解决这个矛盾——存储过程
- 请问SOLARIS9 X86 上能安装ORACLE9I 吗?用的是哪个版本呢?
- 请问怎样截掉VARCHAR后边的空格啊
- 关于SQL*Plus里的set timing on命令中显示的时间问题
- pl/sql developer 5.1.4如何注册?
- 哪里有好的Oracle 书籍下载?100分谢....
随触发器的使用者 -- BaseWTInfo_AMD commit,rollback,没什么问题呀?!
before INSERT OR DELETE
ON "USERBIMSHR"."TGWT_BASEWTINFO"
FOR EACH ROW
declare
HRID varchar(20);
CardNum varchar(20);
DateTimeStr varchar(20);
beginCardNum :=:NEW.fdcardNumber;
DateTimeStr:=To_char(:NEW.fdDateTime,'YYYY-MM-DD');
select fdHRID into HRID from userbimshr.tgHR_BaseInfo where fdWTCardNumber=CardNum;
Userbimshr.NewWT(HRID,DateTimeStr);
insert into userbimshr.tempstr (tempstr) values ('ddddd');
end;
每一条都执行触发器的操作,即每一条都commit,
这样就无法再进行rollback到整个更新操作之前的状态。
但你可以在procedure 写commit,rollback;
怎么办啊!!!!!!!