sql >> Databasteknik >  >> RDS >> Sqlserver

radera poster från mellanställningstabellen efter att de har lagts till i den riktiga tabellen

Möjligen kan du göra DELETE från din mellanställningstabell i kombination med OUTPUT klausul. och INSERT resultatet av OUTPUT klausul i din huvudtabell för att göra allt detta i ett atomärt uttalande.

OUTPUT deleted.* into dashboardtasks 

Det finns vissa begränsningar listade i BOL vilket kan göra detta tillvägagångssätt olämpligt.

Utdatatabellen kan inte:

  • Ha aktiverade utlösare definierade på den.
  • Delta på vardera sidan av en främmande nyckelbegränsning.
  • Ha CHECK-begränsningar eller aktiverade regler.

Full syntax för din fråga...

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. MySQL-fråga med 'in'-operator:varför olika resultat med citattecken?

  2. Spark JoinWithCassandraTable på TimeStamp-partitionsnyckeln STOCK

  3. funktion bind_param() på ett icke-objekt i min nya kod

  4. Okänt kolumnproblem med mysql-alias