Trunkate (SQL)

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 25 juni 2014; kontroller kräver 14 redigeringar .

TRUNCATE  - i SQL -språk - en operation för att omedelbart radera alla rader i en tabell. Logiskt liknar DELETE- operationen utan WHERE-satsen , men skiljer sig i praktiska situationer [1] [2] [3] [4] [5] .

Syntax

Allmän kommandosyntax:

TRUNCATE TABELL < Tabellnamn > _

Konsekvensen av att utföra ett sådant kommando är fullständig radering av alla rader i tabellen <TableName> .

Skillnader från DELETE-satsen

De huvudsakliga skillnaderna mellan TRUNCATE- och DELETE-satserna som kan finnas i olika DBMS- implementationer är:

  • TRUNCATE-operationen skriver inte bort raderingen av enskilda rader till händelseloggen. Som ett resultat kan den inte aktivera utlösare .
  • TRUNCATE-operationen följs av en implicit COMMIT- operation för vissa DBMS (som Oracle ) . Därför kan poster som raderats i tabellen inte återställas med ROLLBACK- operationen . Men det finns också DBMS där TRUNCATE-operationen kan delta i transaktioner, som PostgreSQL och Microsoft SQL Server .
  • DELETE-operationen låser varje rad, medan TRUNCATE-operationen låser hela tabellen.
  • TRUNCATE-operationen returnerar inget meningsfullt värde (returerar vanligtvis 0), till skillnad från DELETE , som returnerar antalet raderade rader.
  • TRUNCATE-operationen i vissa DBMS (t.ex. MySQL eller Microsoft SQL Server ) återställer räknare (för fält med AUTOINCREMENT / IDENTITET). I PostgreSQL kräver återställning av räknare modifieraren RESTART IDENTITY.
  • TRUNCATE-operationen i vissa DBMS (som MySQL , PostgreSQL eller Microsoft SQL Server ) är inte tillåten på tabeller som innehåller främmande nycklar för andra tabeller. PostgreSQL har dock en CASCADE-modifierare som tillåter TRUNCATE i denna situation - data från beroende tabeller raderas i samma transaktion.
  • SQLite har inte en operation som sådan, men det finns en optimering av DELETE-operationen som "avsevärt snabbar upp dess operation om det inte finns något WHERE-argument".

Implementeringen av TRUNCATE-satsen kan bero på valet av en viss DBMS. Därför är det i varje fall nödvändigt att studera dokumentationen för det valda systemet.

Anteckningar

  1. SQL Server Books Online. TRUNCATE TABLE uttalande. . Microsoft. Hämtad 12 oktober 2014. Arkiverad från originalet 25 april 2012.
  2. MySQL-dokumentation. TRUNCATE TABELL Syntax. . Hämtad 14 maj 2010 Arkiverad från originalet 25 april 2012.
  3. Oracle® Databas SQL Reference. 10g Release 2 (10.2). . Oracle Corp. Hämtad 14 maj 2010 Arkiverad från originalet 25 april 2012.
  4. Postgres Pro Standard: Dokumentation: 9.5: TRUNCATE . postgrespro.ru. Hämtad 7 juni 2020. Arkiverad från originalet 7 juni 2020.
  5. DELETE . www.sqlite.org. Hämtad 7 juni 2020. Arkiverad från originalet 17 juni 2020.