Middle
22
0
questionbank

В чем разница между операторами DELETE и TRUNCATE?

Answer from sobes.tech neural network

DELETE удаляет строки по одной, записывая каждое удаление в лог транзакций. Поддерживает операторы WHERE для выборочного удаления и возвращает количество удаленных строк. Может быть откачен (ROLLBACK).

TRUNCATE удаляет все строки из таблицы, освобождая используемое пространство, без записи отдельных удалений в лог транзакций (записывается только факт операции). Не поддерживает операторы WHERE. Как правило, выполняется быстрее, чем DELETE без условия WHERE. TRUNCATE не запускает триггеры ON DELETE. Не может быть полностью откачен в большинстве случаев, так как операция считается DDL (Data Definition Language), хотя в некоторых СУБД (например, PostgreSQL) TRUNCATE может участвовать в транзакциях и быть откачен.

Ключевые отличия:

| Признак | DELETE | TRUNCATE

DELETE удаляет строки по одной, записывая каждое удаление в лог транзакций. Поддерживает операторы WHERE для выборочного удаления и возвращает количество удаленных строк. Может быть откачен (ROLLBACK).

TRUNCATE удаляет все строки из таблицы, освобождая используемое пространство, без записи отдельных удалений в лог транзакций (записывается только факт операции). Не поддерживает операторы WHERE. Как правило, выполняется быстрее, чем DELETE без условия WHERE. TRUNCATE не запускает триггеры ON DELETE. Не может быть полностью откачен в большинстве случаев, так как операция считается DDL (Data Definition Language), хотя в некоторых СУБД (например, PostgreSQL) TRUNCATE может участвовать в транзакциях и быть откачен.

Ключевые отличия:

| Признак | DELETE | TRUNCATE

Register or sign in to get access to full answers for all questions from the question bank.

sqldmlddldatabase-managementperformancedata-integrity