0

[CreateTime] datetime null列を持つテーブル[Product]があり、すでにいくつかのデータがあります。

列[CreateTime]のデフォルト値をgetdate()に設定し、新しく追加されたデータに列[CreateTime]のデフォルト値getdate()を設定するにはどうすればよいですか。

4

1 に答える 1

3

デフォルトを変更することはできません。最初にデフォルトを削除してから、再作成する必要があります。

ドロップするには、名前を知ってから使用する必要があります

ALTER TABLE dbo.Product
  DROP CONSTRAINT yourOldDefaultConstraint

それが完了したら、新しいデフォルトの制約を追加できます。それを既存の行に適用するには、「WITHVALUES」の部分を使用します。

ALTER TABLE dbo.Product
   ADD CONSTRAINT NewDefaultConstraintName
   DEFAULT GetDate() FOR CreateTime WITH VALUES

おっと-申し訳ありませんが、「WITH VALUES」は、テーブルの作成時にDEFAULT制約を作成した場合、または列を追加した場合にのみ機能するようです-既存の列には適用されていないようです。

この場合、ALTERTABLEステートメントの後に次のようなものを続ける必要があります。

UPDATE dbo.T_Product
SET CreateTime = GETDATE()
WHERE CreateTime IS NULL

それでもうまくいくはずです!

マーク

于 2009-09-01T04:36:49.890 に答える