SQL отбрасывать таблицы и заново создавать и хранить данные - PullRequest
5 голосов
/ 17 мая 2011

На нашем оригинальном дизайне мы испортили ограничение внешнего ключа в нашей таблице. Теперь, когда таблица заполнена данными, мы не можем изменить ее, не удалив все записи в таблице. Единственное решение, о котором я мог подумать, - это создать резервную копию таблицы и поместить все записи туда, затем удалить все записи, изменить таблицу и начать добавлять их обратно. Любые другие (ЛУЧШИЕ) идеи? Спасибо!

Использование MS SQL Server

Ответы [ 4 ]

8 голосов
/ 02 августа 2017

Я немного опоздал, просто для справки.
Если вы используете SQL Server Management Studio, вы можете сгенерировать сценарий DROP и RECREATE с параметром «Сохранить схему и данные».

  1. Щелкните правой кнопкой мыши по нужной БД в проводнике объектов
  2. Задачи> Создать сценарии
  3. Выберите таблицу, которую хотите сценария
  4. Затем нажмите кнопку «Дополнительно»
    • «Скрипт DROP and CREATE» -> «Скрипт DROP and CREATE»
    • " Типы данных для скрипта " -> " Схема и данные "

Надеюсь, это поможет

8 голосов
/ 17 мая 2011

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

CREATE TABLE MyTable_2
(...field definitions)

<add the constraint to MyTable_2>

INSERT INTO MyTable_2 (fields)
SELECT fields
FROM MyTable

DROP TABLE MyTable

exec sp_rename 'MyTable2', 'Mytable'
3 голосов
/ 10 августа 2013

Используя SQL Server Management Studio (SSMS), вы можете использовать его конструктор таблицы, чтобы указать конечное состояние таблицы. Перед сохранением изменений, сгенерируйте скрипт изменения и сохраните этот скрипт. Отмените выход из окна дизайна, откройте сценарий и просмотрите его. SSMS, возможно, уже сгенерировал сценарий, который делает все, что вам нужно, исправляя отношения первичного и внешнего ключей при сохранении всех существующих данных. Если нет, то у вас будет уже запущенный скрипт, который выполняет большую часть того, что вам нужно, и должен иметь возможность изменять его для ваших нужд.

3 голосов
/ 17 мая 2011

Это ваше единственное решение.

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

...