ORDER BY, в гарантированном порядке удаления? У меня row trigger-ы злые, и удалить, например, 17-ю строку можно только если 18-ая удалена.
Я могу, конечно, PL/PgSQL-функцию сделать, которая удалять шаг за шагом будет, но это страшненько как-то 🙁
Если не секрет, а что за задача, где потребовалась такая... необычная логика?
Блокчейн, в котором 19-ый блок ссылается внешней ссылкой на 18-ый, и так далее. Впрочем, я уже передумал, и сделаю лучше ON DELETE CASCADE везде где могу
Ну так да - каскад)
вы из блокчейна блоки удаляете? это довольно необычно
Это нормально. Реорганизация сети.
Обычно в блокчейне есть понятие height. То есть вам нужно делать delete from tablename where height >= N.
А, стоп. Понял. row триггеры. Вычеркните мой ответ )
Если бы у меня не было благоразумно заранее добавленного on delete cascade (именно на этот внешний ключ parentHash), я бы сейчас был расстроен намного больше. А row-триггеры не слишком мешают, и on delete cascade сам приведёт к их вызову в нужном порядке. Останется только (предварительно) подчистить данные из других таблиц, ссылающихся на блоки – но там уж порядок не нужен. Да, это именно про реорганизацию сети 🙂
Никак. Технически твой in order by скорее сработает, но это не гарантируется ничем вообще. Советую использовать constraint trigger и откладывать его по необходимости.
Обсуждают сегодня