web-dev-qa-db-ja.com

Nullable列をデフォルト値でNOT NULLに変更します

今日、nullを許可する 'Created'というdatetime列を持つ古いテーブルに出会いました。次に、これをNOT NULLに変更し、デフォルト値に追加する制約(getdate())も含めたいと思います。

これまでのところ、次のスクリプトがありますが、すべてのヌルを事前にクリーンアップしておけば問題なく動作します。

ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL 

ALTERステートメントでデフォルト値も指定する方法はありますか?

60
Jim B

これを3つの別個のステートメントとして行う必要があると思います。私は周りを見回してきましたが、あなたがaddingである場合はできることを示唆しているように見えますが、列を変更している場合はそうではありません。

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 
86
Abe Miessler

最初にnullのすべてのレコードをデフォルト値に更新してから、alter tableステートメントを使用する必要がある場合があります。

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

SQL Serverの場合、デザインビュー内の列プロパティで実行できます。

これを試して?:

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

次の2つのクエリを実行する必要があります。

1-必要な列にデフォルト値を追加するため

ALTER TABLE 'Table_Name` ADD DEFAULT' value 'FOR' Column_Name '

次のようにデフォルト値をColumn IsDeletedに追加します。

例:ALTER TABLE [dbo]。[Employees] ADD IsDeletedのデフォルト0

2-NULL可能列値をNULL以外に変更するには

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

列IsDeletedをnullではないようにしたい

ALTER TABLE [dbo]。[Employees] Alter Column IsDeleted BIT NOT NULL

1
Jinna Balu