社区
基础和管理
帖子详情
触发器修改自身的情况
cer
2005-12-27 02:20:27
情况如下:
A表字段a1,a2
a2是根据a1通过某一费时的算法得到
我现在希望有很快的insert速度,
所以在insert之后(after)起别一个过程来生成a2,
将a2更新到A
但现在出现的情况是:
我写了一个insert的after触发器来update但老是出错
我的问题是可以用触发器完成上面的功能吗?
如果能怎样处理?
如果不能有没有更好的办法?
...全文
263
8
打赏
收藏
触发器修改自身的情况
情况如下: A表字段a1,a2 a2是根据a1通过某一费时的算法得到 我现在希望有很快的insert速度, 所以在insert之后(after)起别一个过程来生成a2, 将a2更新到A 但现在出现的情况是: 我写了一个insert的after触发器来update但老是出错 我的问题是可以用触发器完成上面的功能吗? 如果能怎样处理? 如果不能有没有更好的办法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
swimming8243
2005-12-28
打赏
举报
回复
insert-after的update,难道不能放到insert-before里将:new直接换调?
cer
2005-12-28
打赏
举报
回复
采用了: libin_ftsafe(子陌红尘) 的办法
hevin
2005-12-28
打赏
举报
回复
就是这个原因了,参见楼上。
bobfang
2005-12-28
打赏
举报
回复
行级触发器(for each row)中不允许访问触发的表中的其他的行,但可以通过:NEW.或:OLD.来访问触发的行。
既然"a2是根据a1通过某一费时的算法得到",那么在触发器中计算a2不太妥当,因为触发器没有执行完前,引起触发的语句也不会结束的。还是按libin_ftsafe(子陌红尘)所建议的那样,用JOB来实现,除非业务要求必须要在更新a1后立即更新a2。不过即使要同时更新a2,也最好不在触发器中实现,改为用存储过程来实现写入a1和a2。
cer
2005-12-28
打赏
举报
回复
错误不怎么明确,后来我看书,上面说,在insert的after处不能update自身
hevin
2005-12-27
打赏
举报
回复
你的触发器出什么错?
cer
2005-12-27
打赏
举报
回复
我原来是这样想的...
我计划每天23:50做这个计算
但是由于数据量很大是10万级每天的,那么,会要很久的时间
子陌红尘
2005-12-27
打赏
举报
回复
如果这个字段的计算比较的费时,而该字段实时性要求不高,不妨不要每条记录执行插入之后都通过触发器来更新,封装一个存储过程,用于更新该字段为空的记录,使用JOB定时批量执行。
Oracle
触发器
修改
自身表
1、行级
触发器
不支持 update 、select 、delete 对自身表的操作。 2、表级
触发器
不支持 :new 和 :old对象 所以想要
触发器
对自身表数据做修该,则用行级
触发器
得到 :new 和 :old对象中的相关数据,然后将这样的数据保存到 package中,然后在语句级触发期中调用 package包中保存的数据,进行更新操作
quartz动态创建
触发器
,动态
修改
触发器
时间
最近项目在用quartz去定时执行一些方法,这些时间都是动态的,而且还要去动态的去
修改
这些触发的时间,但是网上资料不全,这里写了个案例希望可以帮到大家,包呢得靠大家自己下载了,我这里用的包是quartz官网上下载的2.2.1的。
MySQL
触发器
Re: MySQL
触发器
=============================#
触发器
概念
触发器
,顾名思义,就是当执行某个事件的时候触发另一个事件的执行!数据库中的
触发器
是和表关联的特殊的存储过程,它可以在插入、删除或
修改
该表表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。 # 数据库
触发器
作用: 1) 安全性:可以基于数据库的值,限制或允许用户的某种操作 2) 审计功能:可以跟踪用户对数据库的操作等 3) 实现复杂的数据完整性规则:
触发器
可产生比CHECK约束更为复杂的限制 4) 实现复杂的非标准的数据库相关完整性规则(针对六个约束) 5) 同步实时地复制表中的数据。 6) 自动计算数据值:如果数据的值达到了一定的要求,则进行特定的处理。-------------------------------------------------------------------------------------------------
实验4答案-
触发器
.sql
触发器
程序设计 2 通过本实验的学习,使学生掌握握
触发器
程序的设计和使用。 二、实验内容 说明:使用银行贷款数据库。 1、新建一个贷款记录统计表LoanNum,存放每一个法人单位的贷款次数。为LoanT表创建一个INSERT语句级
触发器
,当有新的贷款记录插入时,需要及时更新LoanNum表中该法人的贷款次数。 2、创建一个AFTER行级
触发器
,当对LoanT表的贷款金额(Lamount)进行
修改
时,若金额减少了10%,则将此次操作记录到另外一张表L_U(Eno,Bno,Oldamount,Newamount),其中Oldamount是
修改
前的金额,Newamount是
修改
后的金额。 3、创建一个instead of行级
触发器
,为贷款表(LoanT)定义完整性规则“贷款日期(Ldata)不能早于当前日期,如果早于,自动改为当前日期”。 4、创建一个DELETE
触发器
,当贷款表(LoanT)中的记录被删除时,将删除的贷款记录和删除日期插入到另外一张表L_D(Eno, Bno, Ldata, Lamount, Lterm, Deldata) 三、实验报告 将实验结果反映在实验报告中,并对实验中遇到的问题及解决方案、进行整理、分析总结,提出实验结论或自己的看法。
Oracle通过
触发器
或者同义词避免用户
修改
表结构
Oracle通过
触发器
或者同义词避免用户
修改
表结构,2种实现方式,可根据自身需要来选择
基础和管理
17,377
社区成员
95,128
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章