Truncate (SQL)

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 25. juni 2014; checks kræver 14 redigeringer .

TRUNCATE  - i SQL -sprog - en operation til øjeblikkeligt at slette alle rækker i en tabel. Logisk ligner DELETE- operationen uden WHERE-sætningen , men adskiller sig i praktiske situationer [1] [2] [3] [4] [5] .

Syntaks

Generel kommandosyntaks:

TRUNCATE TABLE < Tabelnavn > _

Konsekvensen af ​​at udføre en sådan kommando er fuldstændig sletning af alle rækker i tabellen <Tabelnavn> .

Forskelle fra DELETE-sætningen

De vigtigste forskelle mellem TRUNCATE- og DELETE-sætningerne, der kan være til stede i forskellige DBMS- implementeringer , er:

  • TRUNCATE-operationen skriver ikke sletningen af ​​individuelle rækker til hændelsesloggen. Som et resultat kan den ikke aktivere triggere .
  • TRUNCATE-operationen efterfølges af en implicit COMMIT- operation for nogle DBMS'er (såsom Oracle ) . Derfor kan poster slettet i tabellen ikke gendannes med ROLLBACK- handlingen . Men der er også DBMS'er, hvor TRUNCATE-operationen kan deltage i transaktioner, såsom PostgreSQL og Microsoft SQL Server .
  • DELETE-operationen låser hver række, mens TRUNCATE-operationen låser hele bordet.
  • TRUNCATE-operationen returnerer ikke nogen meningsfuld værdi (returnerer normalt 0), i modsætning til DELETE , som returnerer antallet af slettede rækker.
  • TRUNCATE-operationen i nogle DBMS (f.eks. MySQL eller Microsoft SQL Server ) nulstiller tællere (for felter med AUTOINCREMENT / IDENTITET). I PostgreSQL kræver nulstilling af tællere RESTART IDENTITY-modifikatoren.
  • TRUNCATE-handlingen i nogle DBMS (såsom MySQL , PostgreSQL eller Microsoft SQL Server ) er ikke tilladt på tabeller, der indeholder fremmednøgler til andre tabeller. PostgreSQL har dog en CASCADE-modifikator, der tillader TRUNCATE i denne situation - data fra afhængige tabeller slettes i samme transaktion.
  • SQLite har ikke en operation som sådan, men der er en optimering af DELETE operationen, der "fremskynder operationen markant, hvis der ikke er noget WHERE argument".

Implementeringen af ​​TRUNCATE-sætningen kan afhænge af valget af et bestemt DBMS. Derfor er det i hvert tilfælde nødvendigt at studere dokumentationen for det valgte system.

Noter

  1. SQL Server Books Online. TRUNCATE TABLE-udsagn. . Microsoft. Hentet 12. oktober 2014. Arkiveret fra originalen 25. april 2012.
  2. MySQL-dokumentation. TRUNCATE TABEL Syntaks. . Hentet 14. maj 2010 Arkiveret fra originalen 25. april 2012.
  3. Oracle® Database SQL Reference. 10g Release 2 (10.2). . Oracle Corp. Hentet 14. maj 2010 Arkiveret fra originalen 25. april 2012.
  4. Postgres Pro Standard: Dokumentation: 9.5: TRUNCATE . postgrespro.ru. Hentet 7. juni 2020. Arkiveret fra originalen 7. juni 2020.
  5. SLET . www.sqlite.org. Hentet 7. juni 2020. Arkiveret fra originalen 17. juni 2020.