社区
Oracle
帖子详情
请问怎样写这样一个触发器?(在线等待)
goodfood
2003-05-26 11:16:07
有表A, B,
当A的某字段field1从0变成1时, 向B中插入一些信息,
已经有一个存储过程完成向B插入 fill_B,
但是, 问题在于:
1) 如何在定义trigger的时候, 限制只有A.field1是从0变到1时才触发?
2) trigger执行时出错, cannot COMMIT in a trigger, 那fill_B怎样提交呢?
请教, 多谢
...全文
32
10
打赏
收藏
请问怎样写这样一个触发器?(在线等待)
有表A, B, 当A的某字段field1从0变成1时, 向B中插入一些信息, 已经有一个存储过程完成向B插入 fill_B, 但是, 问题在于: 1) 如何在定义trigger的时候, 限制只有A.field1是从0变到1时才触发? 2) trigger执行时出错, cannot COMMIT in a trigger, 那fill_B怎样提交呢? 请教, 多谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
BlueskyWide
2003-05-26
打赏
举报
回复
create or replace trigger a_b
after update on your_user.a for each row
when (old.field1=0 and new.field1=1)
begin
exec fill_b;
commit;
end a_b;
goodfood
2003-05-26
打赏
举报
回复
多谢bobfang(匆匆过客)
不过如果fill_B中不使用commit的话, fill_B中执行的动作如update, insert要如何提交呢?
还有就是现在执行报错:
table bill.table_A is mutating, trigger/function may not see it
这个要如何解决?
yangjuanli
2003-05-26
打赏
举报
回复
bobfang(匆匆过客) 的回答完全正确。:)
bobfang
2003-05-26
打赏
举报
回复
利用:NEW.field1和:OLD.field1来判断是否由0变为1。
fill_B中不要commit。
goodfood
2003-05-26
打赏
举报
回复
搞定, 结帐
goodfood
2003-05-26
打赏
举报
回复
那么如果说我希望在对table_A的field1改变时(update),
根据table_A的field2(也就是做select得到field2的数值)向table_B插入数据
一般的写法是怎样的?
w_tsinghua
2003-05-26
打赏
举报
回复
trigger中不能commit,并且不应该支持,否则,保证不了事物的完整性,
trigger中的语句与你调用触发此trigger的语句是属于同一个事物
goodfood
2003-05-26
打赏
举报
回复
那么如果说我希望在对table_A的field1改变时, 根据table_A的field2向table_B插入数据
一般该怎么做?
trigger中不能commit, 那trigger的事务提交怎么办呢?
我现在的做法是:
create or replace trigger tri_tableA_status
...
begin
proce1;
end;
create or replace procedure proce1
is
...
b_field integer;
begin
...
select field2 into b_field from table_B;
...
end;
Lastdrop
2003-05-26
打赏
举报
回复
1. trigger中不能commit
2. 你在bill.table_A的trigger中对bill.table_A进行了操作(包括查询),除了before insert触发器外,是不可行的。
goodfood
2003-05-26
打赏
举报
回复
trigger中能commit么?
table bill.table_A is mutating, trigger/function may not see it
是怎么回事, 要怎么解决?
D
触发器
原理
从电路的结构可以看出,它是在基本RS
触发器
的基础之上增加了四个逻辑门而构成的,C门的输出是基本RS
触发器
的置“0”通道,D门的输出是基本RS
触发器
的置“1”通道。C门和D门可以在控制时钟控制下,决定数据[D]是否能...
dpkg-trigger命令 软件包
触发器
dpkg-trigger命令是Debian linux下的软件包
触发器
。 dpkg-trigger命令只能应用在维护者脚本中,或者必须使用“- — by-package”参数。 语法格式 : dpkg-trigger ...覆盖
触发器
等待
者 由于 dpkg-trigger 只能运行
MySQL
触发器
Re: MySQL
触发器
============================= #
触发器
概念
触发器
,顾名思义,就是当执行某个事件的时候触发另
一个
事件的执行!数据库中的
触发器
是和表关联的特殊的存储过程,它可以在插入、删除或修改该表表...
Java 项目中使用单线程 实现 Quartz-2.2.1 触发优先级 源码下载
用
一个
工作线程创建
一个
调度程序; 安排三个不同优先级的
触发器
,第一次同时触发,第二次以错开的时间间隔触发; 启动Quartz Scheduler;
等待
30秒让 Job 有机会触发
触发器
; 关闭调度程序;
最系统,全面的ORACLE资料
涵盖基础知识,备份恢复,
触发器
,过程,job,函数,link,优化,表空间
等待
,肯定有惊喜
Oracle
17,086
社区成员
55,238
社区内容
发帖
与我相关
我的任务
Oracle
Oracle开发相关技术讨论
复制链接
扫一扫
分享
社区描述
Oracle开发相关技术讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章