Csonka (SQL)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2014. június 25-én áttekintett verziótól ; az ellenőrzések 14 szerkesztést igényelnek .

A TRUNCATE  – SQL nyelven – egy művelet a táblázat összes sorának azonnali törlésére. Logikailag hasonló a DELETE művelethez a WHERE záradék nélkül , de gyakorlati helyzetekben különbözik [1] [2] [3] [4] [5] .

Szintaxis

Általános parancs szintaxis:

A TÁBLÁZAT CSONKÍTÁSA < Táblanév >

Egy ilyen parancs végrehajtásának következménye a <TableName> tábla összes sorának teljes törlése .

Különbségek a DELETE utasítástól

A fő különbségek a TRUNCATE és a DELETE utasítások között, amelyek a különböző DBMS -megvalósításokban jelen lehetnek:

  • A TRUNCATE művelet nem írja be az eseménynaplóba az egyes sorok törlését. Ennek eredményeként nem tudja aktiválni a triggereket .
  • A TRUNCATE műveletet egy implicit COMMIT művelet követi bizonyos DBMS -eknél (például az Oracle ) . Ezért a táblázatból törölt rekordok nem állíthatók vissza a ROLLBACK művelettel . De vannak olyan DBMS-ek is, ahol a TRUNCATE művelet részt vehet a tranzakciókban, például a PostgreSQL és a Microsoft SQL Server .
  • A TÖRLÉS művelet zárolja az egyes sorokat, míg a TRUNCATE művelet az egész táblázatot.
  • A TRUNCATE művelet nem ad vissza értelmes értéket (általában 0-t ad vissza), ellentétben a DELETE -vel , amely a törölt sorok számát adja vissza.
  • A TRUNCATE művelet egyes DBMS -ekben (pl . MySQL vagy Microsoft SQL Server ) alaphelyzetbe állítja a számlálókat (az AUTOINCREMENT / IDENTITY mezők esetében). A PostgreSQL -ben a számlálók visszaállításához a RESTART IDENTITY módosító szükséges.
  • A TRUNCATE művelet egyes DBMS -ekben (például a MySQL , a PostgreSQL vagy a Microsoft SQL Server ) nem engedélyezett más táblák idegen kulcsait tartalmazó táblákon. A PostgreSQL-nek azonban van egy CASCADE módosítója, amely lehetővé teszi a TRUNCATE-t ebben a helyzetben - a függő táblák adatai ugyanabban a tranzakcióban törlődnek.
  • Az SQLite -nek önmagában nincs művelete, de van a DELETE művelet optimalizálása, amely "jelentősen felgyorsítja a működését, ha nincs WHERE argumentum".

A TRUNCATE utasítás megvalósítása egy adott DBMS választásától függhet. Ezért minden esetben át kell tanulmányozni a kiválasztott rendszer dokumentációját.

Jegyzetek

  1. SQL Server Books Online. TRUNCATE TABLE utasítás. . Microsoft. Letöltve: 2014. október 12. Az eredetiből archiválva : 2012. április 25..
  2. MySQL dokumentáció. TRUNCATE TABLE Szintaxis. . Letöltve: 2010. május 14. Archiválva az eredetiből: 2012. április 25.
  3. Oracle® Database SQL Reference. 10g 2. kiadás (10.2). . Oracle Corp. Letöltve: 2010. május 14. Archiválva az eredetiből: 2012. április 25.
  4. Postgres Pro Standard: Dokumentáció: 9.5: TRUNCATE . postgrespro.ru. Letöltve: 2020. június 7. Az eredetiből archiválva : 2020. június 7.
  5. TÖRLÉS . www.sqlite.org. Letöltve: 2020. június 7. Az eredetiből archiválva : 2020. június 17.