如何在向表中添加具有默认值的新列时为现有行设置默认值

He *_*llo 4 sql-server default alter

我有一个包含 100 行的表,并且我正在添加具有默认值的新列,如下所示。

ALTER  TABLE AccountDetails
ADD    
   UpdatedOn      DATETIME    DEFAULT GETDATE(),
   UpdatedBy      VARCHAR(50) DEFAULT 'System'
Run Code Online (Sandbox Code Playgroud)

执行此 alter 语句后,新列将添加到表中......这是完美的!但是,这些列的现有行的值将为 NULL。

无论如何,默认情况下它是否会有默认值,而不是为这些列执行单独的更新语句来显式更新默认值?

He *_*llo 5

我自己得到了答案。如果我们在 alter 语句中也添加 NOT NULL 约束,那么在更改表以添加新列时,默认值将应用于新列,并且不会违反非空约束。

   ALTER  TABLE AccountDetails
   ADD    
   UpdatedOn    DATETIME    NOT NULL DEFAULT GETDATE(),
   UpdatedBy    VARCHAR(50) NOT NULL DEFAULT 'System'
Run Code Online (Sandbox Code Playgroud)