Truncate (SQL)

Izvor: Hrvatska internetska enciklopedija
Inačica 121955 od 14. rujna 2021. u 08:36 koju je unio WikiSysop (razgovor | doprinosi) (Bot: Automatski unos stranica)
(razl) ←Starija inačica | vidi trenutačnu inačicu (razl) | Novija inačica→ (razl)
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.