Mi a különbség a DELETE és a TRUNCATE operátorok között?
sobes.tech MI
Válasz az MI-től
A DELETE sorokat egyesével törli, és minden törlést bejegyez a tranzakciós naplóba. Támogatja a WHERE operátorokat szelektív törléshez, és visszaadja a törölt sorok számát. Visszavonható (ROLLBACK).
A TRUNCATE minden sort töröl egy táblából, felszabadítva a használt helyet, anélkül, hogy az egyes törléseket bejegyezné a tranzakciós naplóba (csak az esemény tényét rögzíti). Nem támogatja a WHERE operátort. Általában gyorsabb, mint a DELETE WHERE nélkül. A TRUNCATE nem aktiválja az ON DELETE triggereket. A legtöbb esetben nem teljesen visszavonható, mivel DDL (Adatdefiníciós nyelv) műveletként kezelik, bár néhány adatbázis-kezelő rendszerben (pl. PostgreSQL) a TRUNCATE része lehet tranzakcióknak és visszavonható.
Fő különbségek:
| Jellemző | DELETE | TRUNCATE |
|---|---|---|
| Művelet típusa | DML (Adatmanipulációs nyelv) | DDL (Adatdefiníciós nyelv) |
| Naplózás | Minden törölt sor | Csak az esemény tényét |
| WHERE feltétel | Támogatott | Nem támogatott |
| Visszavonás (ROLLBACK) | Lehetséges | A legtöbb adatbázisban nem, kivéve néhány implementációt |
| ON DELETE trigger | Aktiválódnak | Nem aktiválódnak |
| Sorok visszaadása | A törölt sorok számát adja vissza | Nem ad vissza |
| Teljesítmény | Lassabb (minden sor törlésekor), gyorsabb (részek törlésekor) | Gyorsabb (minden sor törlésekor) |
| Azonosító újraindítása | Nem | Van (a legtöbb adatbázisban) |