отключить ограничение внешнего ключа в MSAccess

Во время передачи данных я хочу отключить/включить

  • Все внешние ключи в таблице

  • Все внешние ключи на всех таблицах

через запрос в MSAccess. Я вызову запрос из модуля С#. Будет массовая вставка.


person faheem khan    schedule 14.03.2013    source источник
comment
Через запрос или во время запроса, например. во время вставки/обновления, как описано здесь: office.microsoft.com/en-gb/access-help/   -  person D.R.    schedule 14.03.2013
comment
@Д.Р. я обновил вопрос, я буду вызывать запрос отключения/включения внешнего ключа/проверки и т. д. через проект С#. поэтому хотите выполнять действия по ссылке через запрос, а не через графический интерфейс   -  person faheem khan    schedule 14.03.2013
comment
Я не думаю, что это возможно в Access (в этой ссылке указано, что это только для файлов ADP), и особенно не с запросом. Это может быть возможным с помощью VBA, в котором вы можете временно хранить отношения, затем удалять их, выполнять массовую вставку и повторно добавлять их после (пример кода для доступа/удаления отношений: allenbrowne.com/DelRel.html), но он не будет обрабатывать тот факт, что некоторые добавленные вами данные могут нарушать отношения, поэтому будьте ОЧЕНЬ осторожны.   -  person RichardC    schedule 14.03.2013


Ответы (1)


Вы можете удалить свои отношения из MSysRelationships делать свои дела, убедиться, что все они действительны, а затем воссоздать запись в MSysRelationships.

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

person Brad    schedule 14.03.2013
comment
Спасибо. Хотя мне не понравилось решение, но я не нашел другого и пытался пропустить это. - person faheem khan; 15.03.2013