如何避免此问题:
无法将值NULL插入列'rowguid',列不允许空值。 INSERT失败。
示例查询是:
insert into tablename (col1, col2, col3)
values('v1', 'v2', 'v3')
答案 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
))