无法在Visual Studio 2012中将列设置为NOT NULL,错误:批处理执行时发生错误

时间:2015-12-28 20:55:18

标签: sql-server tsql visual-studio-2012

我有这张桌子:

CREATE TABLE [dbo].[UserProfile] 
(
    [UserId]     INT            IDENTITY (1, 1) NOT NULL,
    [UserName]   NVARCHAR (MAX) NULL,
    [Gender]     CHAR (10)      NULL,
    [Vegetarian] BIT            NULL,
    [Diet]       NVARCHAR (50)  NULL,
    [Email] NVARCHAR(50) NULL, 
    [Birthday] SMALLDATETIME NULL, 

    PRIMARY KEY CLUSTERED ([UserId] ASC)
);

如果我将列设置为NOT NULL,或者在设计模式下取消选中Allow Null复选框,则无法更新数据库。 VS返回此错误:

  

批处理执行时发生错误。

没有提供其他信息。有人请向我解释一下。我希望UserNameGenderEmailNOT NULL

更新:我发现了问题所在。我的程序的示例用户没有任何数据,这就是为什么当我将新列设置为NOT NULL时,会发生错误。

1 个答案:

答案 0 :(得分:0)

运行此查询以找到错误的行:

SELECT * FROM [dbo].[UserProfile]
WHERE UserName is NULL OR Gender is NULL or Email is NULL

在更改每一列之前,您可能必须运行此类更新:

UPDATE [dbo].[UserProfile]
SET Email = N' '
WHERE Email is NULL

不要尝试合并列的更新 - 您将面临覆盖正确列值的风险。