TRUNCATE is een opdracht in SQL waarmee de gegevens uit een tabel van een database worden gewist. Het effect van een TRUNCATE-opdracht komt overeen met dat van een DELETE-opdracht zonder WHERE-clausule, maar is fysiek niet hetzelfde.
De TRUNCATE-opdracht wordt gebruikt voor het legen van een database tabel en is geklassificeerd als een data definition language (DDL) opdracht. De opbouw en de exacte werking van de TRUNCATE-opdracht kan verschillend zijn per databasesysteem. Over het algemeen wordt de tabel verwijderd en opnieuw aangemaakt. Hierbij worden handelingen overgeslagen die bij een DELETE-opdracht wel worden uitgevoerd, zoals de ON DELETE
trigger. Dit levert vooral bij grote tabellen tijdwinst op. Het zorgt er echter ook voor dat de TRUNCATE-opdracht niet altijd gebruikt kan worden, bijvoorbeeld bij tabellen met een verwijzende sleutel in MySQL.[1]
Opvallende verschillen tussen diverse databasesystemen:
In de simpelste vorm wordt de TRUNCATE-opdracht als volgt opgebouwd:
TRUNCATE TABLE tabelnaam
Bij sommige databasesystemen is TABLE
optioneel. Ook kunnen bij sommige databasesystemen meerdere tabellen opgegeven worden, gescheiden door een komma.
Voor het legen van de tabel 'bedrijven' kan de volgende opdracht worden gebruikt:
TRUNCATE TABLE bedrijven
Indien ook de tabel 'medewerkers' bestaat, met een verwijzende sleutel naar 'bedrijven', kunnen de volgende opdrachten worden gebruikt:
TRUNCATE TABLE medewerkers, bedrijven
Of wanneer CASCADE wordt ondersteund:
TRUNCATE TABLE bedrijven CASCADE
In dat geval wordt de tabel 'medewerkers' ook automatisch geleegd.