1. ホーム
  2. sql

Null可能なカラムをデフォルト値でNOT NULLに変更する

2023-08-11 15:48:37

質問

今日、古いテーブルで、NULLを許容する'Created'というdatetimeカラムがあることに気づきました。 現在、私はこれを変更して、NOT NULLにし、さらに制約を含めてデフォルト値 (getdate()) を追加したいと思います。

今のところ、私は以下のスクリプトを持っています。これは、私が事前にすべてのNULLをクリーンアップしたことを条件として、うまく動作します。

ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL 

ALTER文にデフォルト値も指定する方法はありますか?

どのように解決するのですか?

3つの別々のステートメントとして実行する必要があると思います。 いろいろ調べてみたのですが、以下のようにすればできるようです。 を追加する を追加する場合はできますが、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