Я ищу способ временно отключить все ограничения БД (например, табличные отношения).
Мне нужно скопировать (используя INSERT) таблицы одной БД в другую БД. Я знаю, что могу добиться этого, выполняя команды в правильном порядке (чтобы не нарушать отношения).
Но было бы проще, если бы я мог временно отключить проверку ограничений и снова включить ее после завершения операции.
Это возможно?
sql-server
иsql-server-2005
теги. Ссылка, которую я дал, предназначена для SQL Server, но вы можете сделать то же самое в Oracle - смотрите здесь и здесь . Вы также можете сделать это в PostgreSQL .Ответы:
Вы можете отключить ограничения FK и CHECK
только в SQL 2005+. Смотрите ALTER TABLEили
Первичные ключи и уникальные ограничения не могут быть отключены, но это должно быть хорошо, если я вас правильно понял.
источник
источник
check check
который многие забывают!И, если вы хотите проверить, что вы не нарушили ваши отношения и не представили сирот, после того, как вы перевооружили свои чеки, т.е.
или
затем вы можете запустить и выполнить обновление для любых проверенных столбцов, например так:
И любые ошибки в этой точке будут вызваны несоблюдением ограничений.
источник
Фактически вы можете отключить все ограничения базы данных в одной команде SQL и повторно включить их, вызвав еще одну команду. Видеть:
В настоящее время я работаю с SQL Server 2005, но я почти уверен, что этот подход работал и с SQL 2000
источник
Отключение и включение всех внешних ключей
см. Отключение ограничений и триггеров из журнала MSDN
источник