【问题标题】:TRIGGER EXECUTE WITH LOOP UPTO MATCH SYSDATE使用 LOOP UPTO MATCH SYSDATE 触发执行
【发布时间】:2021-01-11 15:20:10
【问题描述】:

情况就是那个日期和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,SMS,MOBNO FROM TANSDET) 

/*当 EXPDATE 与 SYSDATE 匹配时,该触发器需要执行 */

【问题讨论】:

    标签: oracle function oracle11g triggers procedure


    【解决方案1】:

    如果触发器只有在满足特定条件时才触发,一个简单的选项是包含

    if :new.expdate = trunc(sysdate) then
       ... 
       do whatever trigger is doing
    end if;
    

    除此之外,您用于选择 UID 值的代码错误,它会在多用户环境中失败,因为迟早会有两个(或更多)用户获取相同的MAX 值和 - 如果在该列上定义了主(或唯一)键约束 - 插入将失败。切换到一个序列。

    【讨论】:

    • 它工作正常,并且(uid)字段每天一次只有这个表可以访问以发送警报短信到运输主管,所以它再次工作,谢谢
    • 先生,我能得到建议,以便将考勤数据从 ESSL 机器下载到 Oracle 服务器。
    • 我对 ESSL 机器一无所知,抱歉。也许您应该提出一个新问题,因为这是一个全新的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 2012-11-25
    相关资源
    最近更新 更多