我有一个 Product
表,我想在其中创建一个新列 Modified_By
和 Modified_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/