sql >> データベース >  >> RDS >> Oracle

トリガー内で動的にJOBを作成できますか?

    DBMS_SCHEDULER.CREATE_JOBを呼び出す 暗黙的にコミットするため、DBMS_SCHEDULERを作成することはできません トリガーの仕事。これは、古いDBMS_JOBを使用する必要がある状況の1つです。 DBMS_JOB.SUBMIT以降のパッケージ 暗黙的にコミットしません。

    このトリガーは、DBMS_JOBを使用して必要なジョブを作成する必要があります DBMS_SCHEDULERではなくパッケージ 。

    create or replace
    TRIGGER AFT_INSERT_TMP_TBL
    AFTER INSERT ON TMP_TBL
    REFERENCING OLD AS OLD NEW AS NEW
    FOR EACH ROW
    DECLARE 
    
        V_SQL VARCHAR2(1000);
        A_NAME VARCHAR2(100);
        l_jobno NUMBER;
    BEGIN
        A_NAME:='ANY_NAME';
    
        dbms_job.submit( l_jobno,
                         'BEGIN dbms_output.put_line( ''' || a_name || ''' ); END;',
                         sysdate + interval '2' minute,
                         'sysdate + interval ''2'' minute' );
         DBMS_OUTPUT.PUT_LINE('Job Number:'||l_jobno);
    
    END AFT_INSERT_TMP_TBL;
    


    1. AirflowmysqlからgcpDagエラー

    2. MySQLは2つの値の差の合計を表示します

    3. MySQLインデックスカーディナリティ-パフォーマンスとストレージ効率

    4. MYSQL選択クエリでトリムを使用する方法