В моей базе данных PostgreSQL 9.2 определено множество триггеров на уровне строк AFTER DELETE, которые используются для удаления дочерних строк при удалении родительской строки. (Есть также много FK с ON DELETE CASCADE в случаях, когда дочерняя строка ссылается на родительскую строку.) Это работает, но очень медленно, когда многие строки необходимо удалить. Есть ли способ использовать триггеры на уровне инструкций для этого или другого способа сделать удаление более эффективным? Я не могу понять, как получить удаленные строки в триггерной функции уровня инструкций - или любую полезную информацию о том, что только что произошло.Более эффективные триггеры удаления в PostgreSQL
ответ
На данный момент мало.
Вы можете скопировать информацию о строках, которые нужно удалить, вставив их в боковой стол в триггере BEFORE ... FOR EACH ROW
, а затем введите AFTER
триггер уровня инструкции для удаления из дочерних таблиц, но это не будет хорошо работать со встроенными - во внешнем принудительном исполнении.
Периодически обсуждалось накопление «отношений изменения» для триггеров уровня инструкций. Это то, что вы хотите, но никто не придумал жизнеспособный патч для его реализации.
Это звучит как возможность. Почему вы говорите, что это не сработает с применением FK? Я не понимаю, в чем проблема. – EM0
Ограничения @EM FK сами реализуются как триггеры; они загонят, удалили ли вы строки. –
- 1. Триггеры Postgresql
- 2. Эффективные инкрементные вставки в postgresql
- 3. Триггеры в postgresql
- 4. Триггеры в Postgresql/postgis
- 5. Более эффективные Nav Effects
- 6. Более эффективные вычислительные вероятности
- 7. Более эффективные sql-запросы
- 8. Триггеры PostgreSQL перестали работать
- 9. Триггеры и исключения PostgreSQL
- 10. postgresql триггеры после обновления
- 11. Триггеры события ROLLBACK в postgresql
- 12. Функции и триггеры в PostgreSql
- 13. Триггеры PostgreSQL и временная таблица
- 14. Более быстрые/более эффективные альтернативы маршалу Руби?
- 15. Эффективные способы удаления вложенного представления в Backbone
- 16. Более эффективные способы сделать это
- 17. Триггеры и параметры передачи PostgreSQL
- 18. mysql триггеры для удаления raw
- 19. Есть ли более эффективные или эффективные способы кодирования длинных текстов?
- 20. Каскадные удаления в PostgreSQL
- 21. более эффективные скрипты на Python в Blender3D
- 22. Более эффективные карты накладки в Android
- 23. Как включить более эффективные ошибки в браузере?
- 24. В mysql хранятся более эффективные процедуры?
- 25. Сохраненные процедуры и триггеры в PostgreSQL
- 26. Как обрабатывать триггеры PostgreSQL в распределенной среде
- 27. Как использовать триггеры PostgreSQL в приложении rails?
- 28. Триггеры при миграции из Firebird в Postgresql
- 29. Как временно отключить триггеры в PostgreSQL?
- 30. Попытка найти эффективные способы удаления заголовков в файлах fasta
Почему бы не использовать каскадные удаления? – Elias
@Elias Это не принесет никакой пользы, так как на самом деле они просто триггеры на уровне строк под капотом прямо сейчас ... –