无法在表中插入新列

时间:2012-12-11 16:15:46

标签: sql database sql-server-2008

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

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

  

'Product_Details'表    - 无法修改表格   无法将值NULL插入列'Modified_Date_Time',表'Vendor Products.dbo.Tmp_Product_Details';列不允许空值。 INSERT失败。   声明已经终止。

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

2 个答案:

答案 0 :(得分:4)

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

您必须设置默认值。

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

默认值将设置为今天。

答案 1 :(得分:1)

我发现交互式设计在这方面并不是很好。最好简单地手动添加约束

 ALTER TABLE Table_Name ALTER COLUMN Column_Name DataType NOT NULL

E.g。

 ALTER TABLE MyTable ALTER COLUMN A_Column Int NOT NULL;