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

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

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

ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL 

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

Ответ 1

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

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 

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

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

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

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

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

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

Два - изменить значение столбца с нулевым значением до нуля

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

Я хочу сделать столбец IsDeleted как not null

ALTER TABLE [dbo]. [Сотрудники] Alter Column IsDeleted BIT NOT NULL