Необходимо отключить проверку внешнего ключа. Это можно сделать отключением триггера ALTER TABLE a DISABLE TRIGGER ALL. Но необходимо отключить только запуск триггеров, созданных ограничением внешнего ключа. Для этого вместо ALL можно указать имя триггера.
Как можно получить имя триггера, созданного ограничением внешнего ключа?
Честно... Если возникают такие запросы, то первый вопрос именно к изначальной архитектуре (почему такой запрос вообще возник). а не к способу решения конечной (зачастую ненужной) задачи... :)
Ситуации разные бывают. Допустим есть легаси сервис в котором часть логики завязана на триггерах в базе. Переписывать логику может быть долго и опасно. Поэтому отключать все триггеры не возможно. А отключение проверки внешнего ключа делается как стандартное решение повышение производительности вставки в таблицу
Ну так отключите (измените его поведение) в целом для решения?
Не совсем понял( Отключите его? Триггер проверки внешнего ключа? Вопрос как раз в этом, для отключения отдельного триггера надо знать его имя. А как его получить не совсем понятно. Или может есть другие способы отключения проверки foreign key? А дропать foreign key не хочется как минимум из-за документирования связей между таблицами или из-за возможности включить его в любой момент
Обсуждают сегодня