Время действия отключения внешних ключей?

Обсуждение возникших проблем, предложений и ошибок MyDAC компонентов
Закрыто
imobile
Сообщения: 103
Зарегистрирован: Сб 12 ноя 2011 00:12

Время действия отключения внешних ключей?

Сообщение imobile » Ср 03 апр 2013 07:22

Здравствуйте.
Отключаю внешние ключи по

Код: Выделить всё

MyConnection1->ExecSQL("SET FOREIGN_KEY_CHECKS=0",NULL,0);
Дело в том, что это отключает внешние ключи примерно на 5 мин. Как сделать так, чтоб контроль внешних ключей действовал до конца работы приложения или пока я не включу их?

DemetrionQ
Devart Team
Сообщения: 51
Зарегистрирован: Пн 28 янв 2013 11:54

Re: Время действия отключения внешних ключей?

Сообщение DemetrionQ » Чт 04 апр 2013 17:22

Здравствуйте.

По умолчанию, переменная FOREIGN_KEY_CHECKS имеет локальную область видимости. В этом случае отключение проверки внешних ключей действует в пределах одной сессии до момента, пока вы обратно не включите проверку или не закроете сессию (закроете соединение с сервером).
Если вы хотите, чтобы закрытие соединения не меняло значение переменной FOREIGN_KEY_CHECKS, вы можете менять её с помощью SQL инструкции

Код: Выделить всё

SET GLOBAL FOREIGN_KEY_CHECKS=0
Но имейте ввиду, что в этом случае изменение этой переменной повлияет на все существующие подключения, а не только на ваше.
Более подробную информацию об особенностях использования FOREIGN_KEY_CHECKS и глобальной области видимости серверных переменных вы можете прочесть в MySQL Reference Manual.

Закрыто