今日、nullを許可する 'Created'というdatetime列を持つ古いテーブルに出会いました。次に、これをNOT NULLに変更し、デフォルト値に追加する制約(getdate())も含めたいと思います。
これまでのところ、次のスクリプトがありますが、すべてのヌルを事前にクリーンアップしておけば問題なく動作します。
ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL
ALTERステートメントでデフォルト値も指定する方法はありますか?
これを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
最初にnullのすべてのレコードをデフォルト値に更新してから、alter tableステートメントを使用する必要がある場合があります。
Update dbo.TableName
Set
Created="01/01/2000"
where Created is NULL
SQL Serverの場合、デザインビュー内の列プロパティで実行できます。
これを試して?:
ALTER TABLE dbo.TableName
ADD CONSTRAINT DF_TableName_ColumnName
DEFAULT '01/01/2000' FOR ColumnName
次の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