80

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

これまでのところ、すべてのヌルを事前にクリーンアップしていれば、次のスクリプトは正常に機能します。

ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL 

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

4

5 に答える 5

99

これを3つの別々のステートメントとして行う必要があると思います。私が見たものはすべて、列を追加している場合はできるが、列を変更している場合はできないことを示唆しているようです。

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 
于 2010-07-06T14:10:34.610 に答える
13

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

Update dbo.TableName
Set
Created="01/01/2000"
where Created is NULL
于 2010-07-06T14:24:32.497 に答える
3

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

これを試して?:

ALTER TABLE dbo.TableName 
  ADD CONSTRAINT DF_TableName_ColumnName
    DEFAULT '01/01/2000' FOR ColumnName
于 2010-07-06T13:53:12.690 に答える