Добавление нового столбца в существующую таблицу со значением по умолчанию - PullRequest
0 голосов
/ 02 мая 2019

Предположим, у меня есть таблица с именем SerialNumbers, в которой есть столбцы:

  • Id (int)
  • SerialNumber (nvarchar)
  • IsValid (bit)
  • ToBeUsedBy (DateTime)

В настоящее время эта таблица используется многими различными приложениями.Теперь у нас есть требование добавить новый столбец с именем CurrentlyAt (int), который всегда будет иметь значение по умолчанию 1.Я пошел дальше и добавил столбец со значением по умолчанию 1.

Поэтому мой вопрос заключается в том, должен ли я теперь изменить все мои предыдущие запросы insert, чтобы включить новый столбец, или добавитьзначение по умолчанию, если я не добавил его к старым операторам insert?

1 Ответ

2 голосов
/ 02 мая 2019

Ответ, конечно, заключается в том, что это зависит.

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

INSERT INTO SerialNumbers (
  Id,
  SerialNumber,
  IsValid,
  ToBeUsedBy)
SELECT....

НО если у вас есть какие-либо вставки, которые не имеют список столбцов, они выдадут ошибку:

INSERT INTO SerialNumbers 
SELECT....

Поскольку число столбцов в предложении SELECT или VALUES больше не будет соответствовать количеству столбцов в целевой таблице INSERT.

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

РЕДАКТИРОВАТЬ: По мнению Шона Ланге, я предполагал, чтоновый столбец был NOT NULL.Если это допустимо, то да, есть больше возможных результатов, которые могут привести к результатам, которые не ожидаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...