sql >> Databáze >  >> RDS >> Sqlserver

odstranit záznamy z pracovní tabulky poté, co byly přidány do skutečné tabulky

Možná byste mohli provést DELETE z vaší pracovní tabulky v kombinaci s OUTPUT doložka. a INSERT výsledek OUTPUT klauzule do vaší hlavní tabulky, abyste to udělali v jednom atomickém příkazu.

OUTPUT deleted.* into dashboardtasks 

Existují některá omezení uvedená v BOL což může učinit tento přístup neživotaschopným.

Výstupní_tabulka nemůže:

  • Mějte na něm definované aktivované spouštěče.
  • Účastnit se obou stran cizího klíčového omezení.
  • Mějte CHECK omezení nebo povolená pravidla.

Úplná syntaxe vašeho dotazu...

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. jak rozdělit řetězec do různých sloupců?

  2. Vyberte řádky pro konkrétní datum pomocí datového typu TIMESTAMP

  3. Zaseknutý přístup odepřen pro uživatele 'root'@'localhost' - Terminál, Mac

  4. Proč potřebuji OR NULL v MySQL při počítání řádků s podmínkou