sql-server добавить - Изменение столбца:от нуля до непустого




свойства столбец (10)

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

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

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

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

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


У меня была та же проблема, но для поля, используемого по умолчанию, значение null, а теперь я хочу по умолчанию использовать 0. Это потребовало добавления еще одной строки после решения mdb:

ALTER TABLE [Table] ADD CONSTRAINT [Constraint] DEFAULT 0 FOR [Column];

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

UPDATE table set columnName = 0 where columnName is null

затем

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


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

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

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

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

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

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

UPDATE myTable SET myColumn = 0

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

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


Для встроенного javaDB, включенного в JDK (поддерживаемый Oracle дистрибутив Apache Derby), ниже работало для меня

alter table [table name] alter column [column name] not null;

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

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

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

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


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

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

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


В случае 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"

Лучший способ:

if(typeof variable==='undefined' || variable===null) {

/* do your stuff */
}




sql-server tsql null alter-table alter-column