无法将值NULL插入列' rowguid',列不允许空值。 INSERT失败

时间:2013-06-27 04:34:04

标签: c# asp.net

如何避免此问题:

  

无法将值NULL插入列'rowguid',列不允许空值。 INSERT失败。

示例查询是:

insert into tablename (col1, col2, col3)  
values('v1', 'v2', 'v3')

4 个答案:

答案 0 :(得分:3)

如果您不打算在INSERT语句中显式插入值,并且列为NOT NULL,则需要在TABLE中指定default值。

  

DEFAULT约束用于在a中插入默认值   柱。如果不是,则默认值将添加到所有新记录中   指定了其他值。

答案 1 :(得分:3)

听起来您的表是使用ROWGUIDCOL创建的,但没有相应的默认值。以下是ASP.NET论坛中使用该功能进行正确表定义的示例。它应该给你一些帮助。

CREATE TABLE Globally_Unique_Data
 (guid uniqueidentifier CONSTRAINT Guid_Default DEFAULT NEWSEQUENTIALID() ROWGUIDCOL,
 Employee_Name varchar(60)
 CONSTRAINT Guid_PK PRIMARY KEY (Guid) );

NEWSEQUENTIALID()默认会为您生成GUID。没有它,您将必须生成自己的并将其包含在插入中。您不必像示例中那样将其用作主键,但您必须提供它或使用默认值。

答案 2 :(得分:1)

这个问题有两种解决方法。

你可以将'rowguid'列设为允许null,另一个是设置参数的默认值。

在您的代码中,您可以将值设置为

int v1 = 0;
string v2 ="";

然后将这些值传递给查询。

您可以将存储过程中的默认参数值设置为

@v1 int = 0,
@v2 varchar(50) = ' ' 

答案 3 :(得分:0)

请遵循以下示例:

CREATE TABLE [dbo].[Files](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [IdFile] [uniqueidentifier] unique ROWGUIDCOL  NOT NULL,
    [Title] [nvarchar](max) NULL,
    [File] [varbinary](max) FILESTREAM  NULL,
 CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED 
(
    [id] ASC
))