DELETE
DELETE удаляет подходящие строки одной таблицы.
Синтаксис
Заголовок раздела «Синтаксис»DELETE FROM table_name[WHERE condition][RETURNING expression [, ...]]Описание
Заголовок раздела «Описание»WHERE выбирает удаляемые строки. Без него целевыми становятся все строки. Действия и ограничения внешних ключей применяются внутри того же оператора.
Параметры
Заголовок раздела «Параметры»table_name задаёт целевую таблицу. condition вычисляется для каждой строки-
кандидата. RETURNING читает значения строк, выбранных для удаления.
Результат
Заголовок раздела «Результат»Без RETURNING результатом является число затронутых строк. RETURNING формирует удалённые строки без гарантии порядка.
Поведение в транзакции
Заголовок раздела «Поведение в транзакции»Удаление и поддерживаемые ссылочные действия атомарны. ROLLBACK восстанавливает приватные удаления транзакции; другие сессии видят их только после COMMIT.
Ошибки и ограничения
Заголовок раздела «Ошибки и ограничения»Запрещающие внешние ключи могут отклонить удаление. Ожидания писателей, взаимоблокировки и тайм-ауты подчиняются контракту повторения транзакции. Навигационные пути в DML-условиях и RETURNING версии 1.2 отклоняются.
Обычной сессии нужны CONNECT, USAGE схемы и DELETE уровня таблицы. Для столбцов, прочитанных в WHERE или RETURNING, дополнительно требуется SELECT.
CREATE TABLE ref_delete (id INTEGER PRIMARY KEY, state TEXT NOT NULL);INSERT INTO ref_delete VALUES (1, 'done'), (2, 'open');DELETE FROM ref_delete WHERE state = 'done' RETURNING id, state;См. также
Заголовок раздела «См. также»См. Изменение данных, DROP TABLE и Транзакции.