无法在表中插入新列

Joy*_*979 4 sql database sql-server-2008

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

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

“Product_Details”表 - 无法修改表。
无法将值 NULL 插入列 'Modified_Date_Time'、表 'Vendor Products.dbo.Tmp_Product_Details';列不允许空值。插入失败。该语句已终止。

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

Geo*_*esD 5

ALTER TABLE {TABLENAME} 
    ADD {COLUMNNAME} {TYPE} {NOT NULL} 
    CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
Run Code Online (Sandbox Code Playgroud)

您必须设置一个默认值。

ALTER TABLE Product ADD Modified_By datetime DEFAULT (GETDATE())
Run Code Online (Sandbox Code Playgroud)

默认值将设置为今天。

  • 你没有**必须**设置默认值;允许 NULL,更新数据以便没有任何数据,然后禁止 NULL 应该可以工作。 (2认同)