«Схема изменена после создания целевой таблицы. Повторите запрос Select Into.»: - PullRequest
0 голосов
/ 14 июля 2009

У меня есть код, который отключает триггер для таблицы, запускает обновление и снова активирует триггер. Он не удаляет исходную таблицу и не обновляет схему.

Все бы хорошо, но в то же время существуют отдельные запросы, которые используют эту таблицу в качестве источника для SELECT INTO. По какой-то причине, когда два запроса выполняются одновременно, я получаю эту ошибку:

Схема изменена после целевой таблицы был создан. Перезапустите Избранный запрос.

(Я выбираю временную таблицу.)

Итак, мой первый вопрос:

Меняет ли вызов DISABLE TRIGGER или ENABLE TRIGGER схему таблицы в TSQL?

И мой второй вопрос:

Почему второй запрос сообщает об изменении схемы, если местом назначения является временная таблица?

Ответы [ 2 ]

1 голос
/ 14 июля 2009

Вы никогда не хотите отключать триггеры в производственной системе, которая не находится в однопользовательском режиме, или у вас могут быть серьезные проблемы с целостностью данных. Он отключает обман всех пользователей, а не только вас. Я думаю, вам нужно найти другой способ решения вашей проблемы, если вы хотите, чтобы ваша база данных работала правильно.

1 голос
/ 14 июля 2009

явно вызывающий «DISABLE TRIGGER» или «ENABLE TRIGGER» действительно меняет схему таблицы. вероятно, в системной таблице есть флаг перехвата всех битов, который отслеживает это изменение и вызывает у вас горе.

возможно, вы могли бы "сказать" триггеру "не работать" по-другому. создайте таблицу и вставьте строку, в пределах триггера проверьте наличие строки в этой таблице, если она существует, верните 0, в противном случае выполните обработку. теперь просто вставьте / удалите эту строку, если необходимо ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...