Katkaise (SQL)

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 25. kesäkuuta 2014 tarkistetusta versiosta . tarkastukset vaativat 14 muokkausta .

TRUNCATE  - SQL -kielellä - toiminto poistaa välittömästi kaikki taulukon rivit. Loogisesti samanlainen kuin DELETE -operaatio ilman WHERE-lausetta , mutta eroaa käytännön tilanteissa [1] [2] [3] [4] [5] .

Syntaksi

Yleinen komentosyntaksi:

TYHENNÄ TABLE < Taulukon nimi >

Tällaisen komennon suorittamisen seurauksena taulukon <TableName> kaikki rivit poistetaan kokonaan .

Erot DELETE-lauseeseen

TRUNCATE- ja DELETE-käskyjen tärkeimmät erot, joita voi esiintyä eri DBMS -toteutuksissa, ovat:

  • TRUNCATE-toiminto ei kirjoita yksittäisten rivien poistamista tapahtumalokiin. Tämän seurauksena se ei voi aktivoida laukaisimia .
  • TRUNCATE-toimintoa seuraa implisiittinen COMMIT -toiminto joillekin tietokantajärjestelmille (kuten Oracle ) . Siksi taulukosta poistettuja tietueita ei voida palauttaa ROLLBACK -toiminnolla . Mutta on myös tietokantajärjestelmiä, joissa TRUNCATE-toiminto voi osallistua tapahtumiin, kuten PostgreSQL ja Microsoft SQL Server .
  • DELETE-toiminto lukitsee jokaisen rivin, kun taas TRUNCATE-toiminto lukitsee koko taulukon.
  • TRUNCATE-toiminto ei palauta mitään merkityksellistä arvoa (palauttaa yleensä 0), toisin kuin DELETE , joka palauttaa poistettujen rivien määrän.
  • TRUNCATE-toiminto joissakin tietokantajärjestelmissä (esim . MySQL tai Microsoft SQL Server ) nollaa laskurit (kentille, joissa on AUTOINCREMENT / IDENTITY). PostgreSQL : ssä laskurien nollaus vaatii RESTART IDENTITY -muuntimen.
  • TRUNCATE-toiminto joissakin tietokantajärjestelmissä (kuten MySQL , PostgreSQL tai Microsoft SQL Server ) ei ole sallittu taulukoissa, jotka sisältävät muiden taulukoiden vieraita avaimia. PostgreSQL:llä on kuitenkin CASCADE-muokkaus, joka sallii TRUNCATE:n tässä tilanteessa - tiedot riippuvista taulukoista poistetaan samassa tapahtumassa.
  • SQLite ei sisällä operaatiota sellaisenaan, mutta DELETE-operaatiossa on optimointi, joka "nopeuttaa merkittävästi sen toimintaa, jos WHERE-argumenttia ei ole".

TRUNCATE-käskyn toteutus voi riippua tietyn DBMS:n valinnasta. Siksi kussakin tapauksessa on tarpeen tutkia valitun järjestelmän dokumentaatiota.

Muistiinpanot

  1. SQL Server Books Online. TRUNCATE TABLE -lause. . Microsoft. Haettu 12. lokakuuta 2014. Arkistoitu alkuperäisestä 25. huhtikuuta 2012.
  2. MySQL-dokumentaatio. TUNKOTA TABLE Syntaksi. . Haettu 14. toukokuuta 2010 Arkistoitu alkuperäisestä 25. huhtikuuta 2012.
  3. Oracle® Database SQL Reference. 10 g:n julkaisu 2 (10.2). . Oracle Corp. Haettu 14. toukokuuta 2010 Arkistoitu alkuperäisestä 25. huhtikuuta 2012.
  4. Postgres Pro Standard: Dokumentaatio: 9.5: TRUNCATE . postgrespro.ru. Haettu 7. kesäkuuta 2020. Arkistoitu alkuperäisestä 7. kesäkuuta 2020.
  5. POISTA . www.sqlite.org. Haettu 7. kesäkuuta 2020. Arkistoitu alkuperäisestä 17. kesäkuuta 2020.