sql >> Database >  >> RDS >> Sqlserver

verwijder records uit de verzameltabel nadat ze zijn toegevoegd aan de echte tabel

Eventueel zou je de DELETE . kunnen doen uit uw staging-tabel gecombineerd met de OUTPUT clausule. en INSERT het resultaat van de OUTPUT clausule in uw hoofdtabel om dit allemaal in één atomaire verklaring te doen.

OUTPUT deleted.* into dashboardtasks 

Er zijn enkele beperkingen vermeld in BOL hoewel dat deze benadering onhaalbaar kan maken.

De output_table kan niet:

  • Heb geactiveerde triggers erop gedefinieerd.
  • Neem deel aan beide kanten van een buitenlandse sleutelbeperking.
  • Heeft CHECK-beperkingen of ingeschakelde regels.

Volledige syntaxis voor uw vraag...

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. ODBC/MYSQL Een queryresultaat van ODBC invoegen in een database in MYSQL

  2. Pg_notify gebruiken in de PostgreSQL-triggerfunctie

  3. PHP hoe string array-waarden aan te halen

  4. Hoe PostgreSQL handmatig configureren en starten op Windows?