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

标签 sql-server default alter

我有 100 行的表,我正在添加具有默认值的新列,如下所示。

ALTER  TABLE AccountDetails
ADD    
   UpdatedOn      DATETIME    DEFAULT GETDATE(),
   UpdatedBy      VARCHAR(50) DEFAULT 'System'

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

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

最佳答案

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

   ALTER  TABLE AccountDetails
   ADD    
   UpdatedOn    DATETIME    NOT NULL DEFAULT GETDATE(),
   UpdatedBy    VARCHAR(50) NOT NULL DEFAULT 'System'

关于sql-server - 如何在向表中添加具有默认值的新列时为现有行设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43239037/

相关文章:

seo - 更改默认的 prestashop seo 模板

MySQL 整数列,唯一值但可能默认吗?

MySQL:来自另一个表列的列的默认值

mysql - 添加列和设置值

sql-server-2005 - SQL Server : how to write an alter index statement to add a column to the unique index?

sql-server - Azure SQL (PaaS) 是否经过认证可以在 Microsoft Azure 托管的 Sharepoint 上使用?表现出色?

java - 如何在 Java 中循环遍历大型 SQL 结果集或一次获取 X 行数

mysql - 如何更改 MySQL 中选定列的文本的特定部分?

sql-server - 创建平展空值的 SQL Server (T-SQL) View

SQL 查询帮助 : Transforming Dates In A Non-Trivial Way