Truncate (SQL)
Izgled
U SQL-u, naredba TRUNCATE TABLE služi za brzo brisanje svih podataka iz tablice, čime se zaobilazi niz mehanizama za zaštitu referencijalnog integriteta.
Naredba TRUNCATE TABLE mytable je skoro posve ekvivalentna naredbi DELETE FROM mytable (bez klauzule WHERE). Iznimke su:
- U Oracle-u,
TRUNCATEje implicitno praćen operacijom commit. - Tipično,
TRUNCATE TABLEbrzo briše sve slogove dealocirajući stranice podataka koje tablica koristi. Ovo smanjuje potrebu za resursima Transaction log-a i zaključavanja baze. Slogovi brisani na ovaj način se ne mogu vratiti uz pomoć rollback operacije. Iznimka je implementacije PostgreSQL-a, gdje jeTRUNCATE TABLEtransakcijska, pa se cijela brisana tablica čuva do sljedeće naredbeCOMMITiliROLLBACK. - Nije moguće koristit klauzulu
WHEREuzTRUNCATE TABLE- briše se sve ili ništa. TRUNCATE TABLEne pokreće trigger-e (ON DELETE/ON UPDATE), koji se tipično javljaju kod brisanja primarnog ključa koji je korišten kao strani ključ u drugim tablicama. Ovo može rezultirati u nekonzistentnim podacima.- u nekim sustavima,
TRUNCATE TABLEresetira brojač Identity columna na početak. - U Microsoft SQL Server-u,
TRUNCATE TABLEse ne može koristiti za tablice uključene u replikaciju ili log shipping, jer o tim tablicama ovisi konzistentnost baze, a one same ovise o transaction log-u.