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

実際のテーブルに追加された後、ステージング テーブルからレコードを削除する

    おそらく、DELETE を実行できます。 OUTPUT と組み合わせたステージング テーブルから 句。そして INSERT OUTPUT の結果 句をメイン テーブルに挿入して、これをすべて 1 つのアトミック ステートメントで実行します。

    OUTPUT deleted.* into dashboardtasks 
    

    いくつかの制限が BOL に記載されています ただし、このアプローチは実行不可能になる可能性があります。

    output_table はできません:

    • 有効なトリガーが定義されている
    • 外部キー制約のいずれかの側に参加します。
    • CHECK制約または有効なルールを持っている

    クエリの完全な構文...

    DELETE FROM staggingtasks
    OUTPUT DELETED.[tour],
           DELETED.tourname,
           DELETED.[taskname],
           DELETED.[deptdate],
           DELETED.[tasktype],
           DELETED.[desc],
           DELETED.[duedate],
           DELETED.[compdate],
           DELETED.[comments],
           DELETED.[agent],
           DELETED.[compby],
           DELETED.[graceperiod],
           DELETED.completed,
           DELETED.canceled
    INTO dashboardtasks
    WHERE  NOT EXISTS(SELECT *
                      FROM   dashboardtasks
                      WHERE  ( staggingtasks.tour = dashboardtasks.tour
                               and staggingtasks.taskname = dashboardtasks.taskname
                               and staggingtasks.deptdate = dashboardtasks.deptdate
                               and staggingtasks.duedate = dashboardtasks.duedate
                               and staggingtasks.tourname = dashboardtasks.tourname
                             ))  
    


    1. Oracle:DBMS_UTILITY.EXEC_DDL_STATEMENTとEXECUTE IMMEDIATE

    2. SysBenchを使用してMySQLとMariaDBのパフォーマンスをベンチマークする方法

    3. MySQL + Rails:errno:150外部キー制約が正しく形成されていません

    4. EF 4 が一意のインデックスを持つ列への FK リレーションの関連付けを生成しないのはなぜですか?