Sobes.tech
Middle

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)