Zkrátit (SQL)

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 25. června 2014; kontroly vyžadují 14 úprav .

TRUNCATE  - v jazyce SQL - operace pro okamžité odstranění všech řádků v tabulce. Logicky podobná operaci DELETE bez klauzule WHERE , ale liší se v praktických situacích [1] [2] [3] [4] [5] .

Syntaxe

Obecná syntaxe příkazu:

TRUNCATE TABLE < Název tabulky >

Důsledkem provedení takového příkazu je úplné smazání všech řádků tabulky <TableName> .

Rozdíly od příkazu DELETE

Hlavní rozdíly mezi příkazy TRUNCATE a DELETE, které mohou být přítomny v různých implementacích DBMS , jsou:

  • Operace TRUNCATE nezapisuje do protokolu událostí mazání jednotlivých řádků. V důsledku toho nemůže aktivovat spouštěče .
  • Po operaci TRUNCATE následuje implicitní operace COMMIT pro některé DBMS (jako je Oracle ) . Proto záznamy smazané v tabulce nelze obnovit pomocí operace ROLLBACK . Existují však také DBMS, kde se operace TRUNCATE může účastnit transakcí, jako je PostgreSQL a Microsoft SQL Server .
  • Operace DELETE uzamkne každý řádek, zatímco operace TRUNCATE uzamkne celou tabulku.
  • Operace TRUNCATE nevrací žádnou smysluplnou hodnotu (obvykle vrací 0), na rozdíl od DELETE , která vrací počet smazaných řádků.
  • Operace TRUNCATE v některých DBMS (např . MySQL nebo Microsoft SQL Server ) vynuluje čítače (pro pole s AUTOINCREMENT / IDENTITY). V PostgreSQL vyžaduje resetování počítadel modifikátor RESTART IDENTITY.
  • Operace TRUNCATE v některých DBMS (jako je MySQL , PostgreSQL nebo Microsoft SQL Server ) není povolena u tabulek obsahujících cizí klíče jiných tabulek. PostgreSQL však má modifikátor CASCADE, který v této situaci umožňuje TRUNCATE - data ze závislých tabulek jsou vymazána ve stejné transakci.
  • SQLite nemá operaci jako takovou, ale existuje optimalizace operace DELETE, která "výrazně zrychlí její činnost, pokud není argument WHERE".

Implementace příkazu TRUNCATE může záviset na volbě konkrétního DBMS. Proto je v každém případě nutné prostudovat dokumentaci zvoleného systému.

Poznámky

  1. SQL Server Books Online. Příkaz TRUNCATE TABLE. . Microsoft. Získáno 12. října 2014. Archivováno z originálu 25. dubna 2012.
  2. Dokumentace MySQL. Syntaxe TRUNCATE TABLE. . Získáno 14. května 2010 Archivováno z originálu dne 25. dubna 2012.
  3. Oracle® Database SQL Reference. 10g vydání 2 (10.2). . Společnost Oracle Corp. Získáno 14. května 2010 Archivováno z originálu dne 25. dubna 2012.
  4. Postgres Pro Standard: Dokumentace: 9.5: TRUNCATE . postgrespro.ru. Získáno 7. června 2020. Archivováno z originálu dne 7. června 2020.
  5. ODSTRANIT . www.sqlite.org. Získáno 7. června 2020. Archivováno z originálu dne 17. června 2020.