Sök…


Introduktion

Satsen TRUNCATE raderar alla data från en tabell. Detta liknar DELETE utan filter, men beroende på databasprogramvaran har vissa begränsningar och optimeringar.

Syntax

  • TRUNCATE TABLE tabellnamn;

Anmärkningar

TRUNCATE är ett DDL-kommando (Data Definition Language), och som sådan finns det betydande skillnader mellan det och DELETE (ett Data Manipulation Language, DML, kommando). Även om TRUNCATE kan vara ett sätt att snabbt ta bort stora volymer av poster från en databas, bör dessa skillnader förstås för att bestämma om att använda ett TRUNCATE-kommando är lämpligt i just din situation.

  • TRUNCATE är en datasidesoperation. Därför kommer DML-triggers (ON DELETE) som är associerade med tabellen inte att avfyras när du utför en TRUNCATE-operation. Även om detta kommer att spara en stor tid för massiva raderingsoperationer, kan du dock behöva ta bort den relaterade informationen manuellt.
  • TRUNCATE släpper det hårddiskutrymme som används av de raderade raderna, DELETE släpper utrymme
  • Om tabellen som ska trunkeras använder identitetskolumner (MS SQL Server) återställs frönet med kommandot TRUNCATE. Detta kan leda till problem med referensintegritet
  • Beroende på vilka säkerhetsroller som finns på plats och varianten av SQL som används kanske du inte har nödvändiga behörigheter för att utföra ett TRUNCATE-kommando

Ta bort alla rader från medarbetartabellen

TRUNCATE TABLE Employee;

Att använda trunkeringstabellen är ofta bättre än att använda DELETE TABLE eftersom det ignorerar alla index och triggers och bara tar bort allt.

Radera tabell är en radbaserad operation vilket innebär att varje rad raderas. Trunkeringstabell är en datasidesoperation som hela datasidan omfördelas. Om du har en tabell med en miljon rader kommer det att vara mycket snabbare att stänga av tabellen än det skulle vara att använda en rader om tabellen.

Även om vi kan ta bort specifika rader med DELETE, kan vi inte TRUNCATE specifika rader, vi kan bara TRUNCATE alla poster på en gång. Att radera alla rader och sedan infoga en ny post fortsätter att lägga till det Auto inkrementerade primära nyckelvärdet från det tidigare infogade värdet, där som i Trunkering kommer Auto inkrementellt primärnyckelvärde också att återställas och börjar från 1.

Observera att vid avkortning av tabellen behöver inga utländska nycklar finnas , annars får du ett fel.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow