如何解决带循环匹配系统的触发器执行
情况是与sysdate匹配的日期,该时间只需要执行该触发器即可。
这就是我需要的情况
select * from TANSDET
vechno sms mobno EXPDATE
===========================================================================================
TN 63 M 9276 Insurance Expire For - TN 63 M 9276 At - 26-SEP-20 9787629787 26-SEP-20
TN 37 CH 0054 Insurance Expire For - TN 37 CH 0054 At - 10-OCT-20 9787629787 10-OCT-20
TN 55 AA 7611 Insurance Expire For - TN 55 AA 7611 At - 03-NOV-20 9787629787 03-NOV-20
INSERT INTO SMS_TABLE (UID,SMS,MOBNO)VALUES (SELECT (SELECT MAX(NVL(UID,1))+1 FROM TANSDET)UID,MOBNO FROM TANSDET)
/ *何时以及何时使用SYSDATE进行匹配,因此需要执行该触发器的时间* /
解决方法
如果触发器仅在满足特定条件时才触发,那么一个简单的选择就是包含
if :new.expdate = trunc(sysdate) then
...
do whatever trigger is doing
end if;
除此之外,用于选择UID
值的代码是错误,并且在多用户环境中该代码将失败,因为迟早会有两个(或更多)用户获取相同的MAX值,并且-如果在该列上定义了主键(或唯一键)约束,则插入将失败。切换到序列。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。