sql >> Database teknologi >  >> RDS >> Sqlserver

slette poster fra iscenesættelsestabellen, efter at de er blevet tilføjet til den rigtige tabel

Du kunne muligvis gøre DELETE fra din iscenesættelsestabel kombineret med OUTPUT klausul. og INSERT resultatet af OUTPUT klausul i din hovedtabel for at gøre alt dette i én atomudsagn.

OUTPUT deleted.* into dashboardtasks 

Der er nogle begrænsninger angivet i BOL dog, hvilket kan gøre denne tilgang uholdbar.

Output_tablen kan ikke:

  • Har aktiverede triggere defineret på den.
  • Deltag på begge sider af begrænsning af fremmednøgle.
  • Har CHECK-begrænsninger eller aktiverede regler.

Fuld syntaks for din forespørgsel...

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. Undgå filsortering med INNER JOIN + BESTIL EFTER

  2. Sqlite indsætter ikke data i 2. tabel

  3. beregning af den samlede login-logout-tid for en bestemt bruger i mysql

  4. MySQL:Hvordan finder jeg ud af, hvilke tabeller der refererer til en bestemt tabel?