Zoeken…
Invoering
Met de instructie TRUNCATE worden alle gegevens uit een tabel verwijderd. Dit is vergelijkbaar met VERWIJDEREN zonder filter, maar heeft, afhankelijk van de databasesoftware, bepaalde beperkingen en optimalisaties.
Syntaxis
- TRUNCATE TABLE tabelnaam;
Opmerkingen
TRUNCATE is een DDL-opdracht (Data Definition Language), en als zodanig zijn er significante verschillen tussen het en DELETE (een Data Manipulation Language, DML, opdracht). Hoewel TRUNCATE een middel kan zijn om snel grote hoeveelheden records uit een database te verwijderen, moeten deze verschillen worden begrepen om te beslissen of het gebruik van een TRUNCATE-opdracht geschikt is voor uw specifieke situatie.
- TRUNCATE is een gegevenspagina-bewerking. Daarom worden DML-triggers (BIJ VERWIJDEREN) die aan de tabel zijn gekoppeld niet geactiveerd wanneer u een TRUNCATE-bewerking uitvoert. Hoewel dit een grote hoeveelheid tijd bespaart voor massale verwijderingsbewerkingen, moet u de gerelateerde gegevens echter mogelijk handmatig verwijderen.
- TRUNCATE geeft de schijfruimte vrij die wordt gebruikt door de verwijderde rijen, DELETE geeft ruimte vrij
- Als de te verkorten tabel identiteitskolommen (MS SQL Server) gebruikt, wordt de seed opnieuw ingesteld met de opdracht TRUNCATE. Dit kan referentiële integriteitsproblemen veroorzaken
- Afhankelijk van de aanwezige beveiligingsrollen en de gebruikte SQL-variant, beschikt u mogelijk niet over de benodigde machtigingen om een TRUNCATE-opdracht uit te voeren
Alle rijen verwijderen uit de tabel Werknemer
TRUNCATE TABLE Employee;
Het gebruik van een afgekapte tabel is vaak beter dan het gebruik van VERWIJDER TABEL omdat het alle indexen en triggers negeert en gewoon alles verwijdert.
Tabel verwijderen is een op rijen gebaseerde bewerking. Dit betekent dat elke rij wordt verwijderd. Truncate-tabel is een gegevenspagina-bewerking, de hele gegevenspagina wordt opnieuw toegewezen. Als u een tabel met een miljoen rijen hebt, is het veel sneller om de tabel af te korten dan wanneer u een instructie voor het verwijderen van een tabel zou gebruiken.
Hoewel we specifieke rijen kunnen verwijderen met DELETE, kunnen we specifieke rijen niet TRUNCEREN, we kunnen alleen alle records in één keer TRUNCEREN. Wanneer alle rijen worden verwijderd en vervolgens een nieuw record wordt ingevoegd, blijft de waarde voor de automatisch ingevoerde primaire sleutel van de eerder ingevoegde waarde toegevoegd, terwijl de waarde voor de automatisch ingevoerde primaire sleutel, zoals in Truncate, ook opnieuw wordt ingesteld en begint vanaf 1.
Merk op dat bij het inkorten van de tabel geen externe sleutels aanwezig mogen zijn , anders krijg je een foutmelding.