Корзина
Удалить строку можно тремя путями — с экрана таблицы, командой DELETE
в SQL-редакторе или DBeaver, удалением источника, — и все они ведут в одну
корзину.
DELETE без подмены
Заголовок раздела «DELETE без подмены»Команда DELETE по таблице источника выполняется как есть: строки
удаляются по-настоящему, никакой скрытой подмены команды нет. На каждой
таблице источника висит обычный триггер Postgres «после удаления» — он
кладёт удалённые строки партией в корзину и помечает их события в сырых
данных удалёнными. Одна команда — одна партия; удаление, не задевшее
ни строки, партии не заводит. Так же уходят в корзину удаление через ваше
представление и MERGE … DELETE. TRUNCATE вашей роли не дан — он обошёл
бы триггер; для этого есть «Очистить источник» с корзиной.
Корзину пишет функция платформы с её правами: у вашей роли прав на корзину нет, и подменить эту функцию своей нельзя.
Что лежит в партии
Заголовок раздела «Что лежит в партии»Каждая строка — ровно такой, какой её удалили, со служебными столбцами. У партии — когда, сколько строк, каким путём (команда, экран таблицы, очистка или удаление источника, отмена загрузки файла), текст команды или фильтр.
«Вернуть»
Заголовок раздела ««Вернуть»»Строки возвращаются в таблицу ровно такими, какими их удалили, а пометка в сырых данных снимается. Если с тех пор в таблице появился столбец, у возвращённых строк он пустой; если тип столбца расширился, значение приводится к нему. Если тип закрепили так, что старое значение в него не ложится, партия не возвращается целиком — лучше ничего, чем половина.
Через 30 дней
Заголовок раздела «Через 30 дней»Партия удаляется сама — вместе с событиями в сырых данных и их повторными отправками. «Удалить окончательно сейчас» делает это сразу. Так вы удаляете и сырые данные: прямого права на них у вашей роли нет — только через корзину. От партии остаётся запись «когда и сколько» без данных.
Удалённый источник
Заголовок раздела «Удалённый источник»Удаление источника уводит в корзину все строки его таблицы одной партией. Если в момент удаления событие ещё было в пути (тело грузилось, опрос работал), его строка появится чуть позже и уйдёт следом своей партией. Возвращённые строки остаются в таблице, сам источник остаётся удалённым, а таблица — на месте: на ней могут держаться ваши представления.
Почему UPDATE не в корзине
Заголовок раздела «Почему UPDATE не в корзине»Корзина хранит строки, а не версии значений. UPDATE меняет значение
на месте, и прежнего значения у платформы нет — таблица из сырых данных
заново не строится (Путь данных). Исходное событие
остаётся в raw.events: из него старое значение можно достать своим
запросом. Перед большой правкой сделайте бэкап.