Измените Nullable столбец на NOT NULL со значением по умолчанию

Сегодня я натолкнулся на старую таблицу со столбцом даты и времени под названием "Создано", в котором допускаются пустые значения. Теперь я хотел бы изменить это так, чтобы оно НЕ было ПУСТО (NULL), а также включить ограничение для добавления значения по умолчанию (getdate()).

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

ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL 

Есть ли способ также указать значение по умолчанию в инструкции ALTER?

4 ответа

Решение

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

ALTER TABLE dbo.MyTable
ADD CONSTRAINT my_Con DEFAULT GETDATE() for created

UPDATE MyTable SET Created = GetDate() where Created IS NULL

ALTER TABLE dbo.MyTable 
ALTER COLUMN Created DATETIME NOT NULL 

Возможно, вам придется сначала обновить все записи, которые являются нулевыми, до значения по умолчанию, а затем использовать оператор alter table.

Update dbo.TableName
Set
Created="01/01/2000"
where Created is NULL

Вам нужно выполнить два запроса:

Один - добавить значение по умолчанию в необходимый столбец

ALTER TABLE 'Table_Name` ADD DEFAULT ' значение ' FOR 'Column_Name'

я хочу добавить значение по умолчанию для столбца IsDeleted, как показано ниже:

Пример: ALTER TABLE [dbo].[Сотрудники] ADD По умолчанию 0 для IsDeleted

Два - изменить значение столбца, допускающее значение NULL

ALTER TABLE 'table_name' ALTER COLUMN 'column_name' 'data_type' NOT NULL

я хочу сделать столбец IsDeleted как не нуль

ALTER TABLE [dbo]. [Сотрудники] Изменить столбец IsDeleted BIT NOT NULL

Если это SQL Server, вы можете сделать это на свойствах столбца в представлении конструктора

Попробуй это?:

ALTER TABLE dbo.TableName 
  ADD CONSTRAINT DF_TableName_ColumnName
    DEFAULT '01/01/2000' FOR ColumnName

Попробуй это

ALTER TABLE имя_таблицы ALTER COLUMN имя_столбца тип_данных NOT NULL;

Другие вопросы по тегам