sql-server - таблицу - объект зависит от столбец




Изменение столбца: от нуля до непустого (8)

В моем случае у меня были трудности с опубликованными ответами. В итоге я использовал следующее:

ALTER TABLE table_name CHANGE COLUMN column_name column_name VARCHAR(200) NOT NULL DEFAULT '';

Измените VARCHAR(200) на свой тип данных и, возможно, измените значение по умолчанию.

Если у вас нет значения по умолчанию, у вас возникнет проблема с этим изменением, поскольку по умолчанию будет null, создающий конфликт.

У меня есть таблица с несколькими столбцами с нулевым числом. Это нежелательно по нескольким причинам, поэтому я хочу обновить все значения до 0 и затем установить эти столбцы NOT NULL . Помимо изменения нулей в 0 , данные должны быть сохранены.

Я ищу конкретный синтаксис SQL для изменения столбца (назовем его ColumnA ) на « not null ». Предположим, что данные были обновлены, чтобы не содержать нулей.

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


В случае FOREIGN KEY CONSTRAINT ... будет проблема, если «0» отсутствует в столбце таблицы основных ключей. Решение для этого ...

ШАГ 1:

Отключите все ограничения, используя этот код:

EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

ШАГ 2:

RUN UPDATE COMMAND (as mentioned in above comments)
RUN ALTER COMMAND (as mentioned in above comments)

ШАГ 3:

Включите все ограничения, используя этот код:

exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

Во-первых, все текущие значения NULL исчезают:

UPDATE [Table] SET [Column]=0 WHERE [Column] IS NULL

Затем обновите определение таблицы, чтобы запретить NULL:

ALTER TABLE [Table] ALTER COLUMN [Column] INTEGER NOT NULL

Для Oracle 11g я смог изменить атрибут столбца следующим образом:

ALTER TABLE tablename MODIFY columnname datatype NOT NULL;

В противном случае ответ Абатьева казался хорошим. Вы не можете повторить изменения - жалуется (по крайней мере, в SQL Developer), что столбец уже не равен нулю.


Пока столбец не является уникальным идентификатором

UPDATE table set columnName = 0 where columnName is null

затем

Измените таблицу и установите для поля значение не равным нулю и укажите значение по умолчанию 0


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

  1. Как уже указывали другие, вы не можете установить «не null», пока все существующие данные не будут «нулевыми»:

UPDATE myTable SET myColumn = 0

  1. Как только это будет сделано, с таблицей в представлении дизайна (щелкните правой кнопкой мыши по таблице и выберите «дизайн»), вы можете просто снять флажки «Разрешить нули» следующим образом:

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


это кажется более простым, но работает только на Oracle:

ALTER TABLE [Table] 
ALTER [Column] NUMBER DEFAULT 0 NOT NULL;

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


это сработало для меня:

ALTER TABLE [Table] 
Alter COLUMN [Column] VARCHAR(50) not null;






alter-column