Truncate (SQL)

Izvor: Hrvatska internetska enciklopedija
Skoči na:orijentacija, traži

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, TRUNCATE je implicitno praćen operacijom commit.
  • Tipično, TRUNCATE TABLE brzo 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 je TRUNCATE TABLE transakcijska, pa se cijela brisana tablica čuva do sljedeće naredbe COMMIT ili ROLLBACK.
  • Nije moguće koristit klauzulu WHERE uz TRUNCATE TABLE - briše se sve ili ništa.
  • TRUNCATE TABLE ne 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 TABLE resetira brojač Identity columna na početak.
  • U Microsoft SQL Server-u, TRUNCATE TABLE se 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.