0

我怎样才能避免这个问题:

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

示例查询是:

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

4 回答 4

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。没有它,您将不得不生成自己的并将其包含在插入中。您不必像示例中那样将其用作主键,但您必须提供它或使用默认值。

于 2013-06-27T04:59:39.880 回答
3

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

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

于 2013-06-27T04:37:56.430 回答
1

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

一种是您可以使列 'rowguid' 允许为空,另一种是设置参数的一些默认值。

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

int v1 = 0;
string v2 ="";

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

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

@v1 int = 0,
@v2 varchar(50) = ' ' 
于 2013-06-27T04:52:26.190 回答
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
))
于 2015-09-05T04:09:01.130 回答