особый случай при модификации базы данных - PullRequest
1 голос
/ 25 ноября 2010

иногда я сталкиваюсь со следующим случаем в моем дизайне базы данных, я хочу знать, как лучше всего справляться с этим делом :::

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

какова лучшая практика в этой ситуации ..

заставить поле принять значение null как (некоторые данные уже введены в таблицу, и исключить важное ограничение) и попытаться заставить пользователя ввести это поле путем некоторой проверки в коде.

усекать все введенные данные и снова вводить их (утомительная работа) ..

любые другие предложения по этому вопросу ...

Ответы [ 4 ]

2 голосов
/ 25 ноября 2010

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

1 голос
/ 25 ноября 2010

Если возможно, я бы установил значение по умолчанию для нового столбца.

например. Для Варчар

alter table table_name 
    add column_name varchar(10) not null 
    constraint column_name_default default ('Test') 

После обновления вы можете сбросить значение по умолчанию

alter table table_name 
drop constraint column_name_default

Многое будет зависеть от ваших требований.

0 голосов
/ 25 ноября 2010

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

  1. В SQL Server Management Studio щелкните правой кнопкой мыши таблицу, которую вы хотите изменить, и выберите Script Table As> CREATE To> New Query Editor Window.

  2. Добавьте # перед именем таблицы в операторе CREATE.

  3. Переместить все записи во временную таблицу, используя что-то с эффектом:

    INSERT INTO #temp SELECT * FROM original

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

  5. Сократите исходную таблицу и внесите необходимые изменения.

  6. Щелкните правой кнопкой мыши по таблице и выберите Script Table As> INSERT To> Clipboard, вставьте его в окно редактора запросов и измените его для чтения записей из временной таблицы, используя INSERT .. SELECT.

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

0 голосов
/ 25 ноября 2010

Это зависит от вашего приложения, вашей схемы базы данных, ваших сущностей.

...