sql - 无法在表中插入新列

标签 sql database sql-server-2008

我有一个 Product 表,我想在其中创建一个新列 Modified_ByModified_Date_Time。这些列不允许空值。

但是,由于数据库已经有数据,为了创建这个列,我不得不定义为“允许空值”。然后,我运行一个更新新列的过程。最后一步是取消选中“允许空值”属性,但是当我尝试保存表更改时,出现以下错误:

'Product_Details' table - Unable to modify table.
Cannot insert the value NULL into column 'Modified_Date_Time', table 'Vendor Products.dbo.Tmp_Product_Details'; column does not allow nulls. INSERT fails. The statement has been terminated.

所有行都已成功更新为“Modified_By”和“Modified_Date_Time”列中的正确值,所以我不知道为什么会出现此错误...无论如何,似乎是一个新的“临时”表由 SQL Server 2008 创建,因为我没有任何名为“Tmp_Orders”的表

最佳答案

ALTER TABLE {TABLENAME} 
    ADD {COLUMNNAME} {TYPE} {NOT NULL} 
    CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}

您必须设置一个默认值。

ALTER TABLE Product ADD Modified_By datetime DEFAULT (GETDATE())

默认值将设置为今天。

关于sql - 无法在表中插入新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13824027/

相关文章:

sql-server-2008 - 在 SSMS 中调试时可以设置条件断点吗?

mysql - 即使在相关表中找不到相关记录,也可以从一个表中检索所有记录

python - 将日期插入 Python MySQLdb

java - 关系处理 : Hibernate vs JDBC

REPLACE INTO上的Mysql Innodb死锁问题

sql-server - SQL Server 将时间戳数据类型转换为十进制

sql - 制定 SQL 语句

mysql - 在 where 子句中选择唯一 ID 时是否必须使用 "FETCH FIRST n ROWS ONLY"或 "LIMIT"

sql - 日期之间一天中的小时数

c# - 为 500,000 个航类寻找航类连通性的算法