我想通过以下查询在数据库中插入值:
INSERT INTO Users (pinConfirmed,Factor,DateUtc,LockoutEnabled,AccessCount,EmailConfirmed)
values ('false', 'false','1/1/2018' ,'false','0','false')
但是我得到这个错误:无法将值NULL插入表'Users'的'Id'列中;列不允许为空。 INSERT失败。
但是,数据库中已经有ID不为null的数据。 我检查了这两个请求,但Id没有空值。
select * from Users where Id IS NULL;
select * from Users where Id = 'NULL';
我不明白问题出在哪里。 请帮助。
答案 0 :(得分:0)
ID是PRIMARY键,它是该行的唯一标识符。不能为空。这就是为什么您有错误。
答案 1 :(得分:0)
根据您对上述问题的评论,Id
列定义为:
[Id] NVARCHAR (128) NOT NULL
就是这样。没有默认值,没有标识/自动递增,等等。只是一个不能为NULL
的字符值。但是,当您执行插入操作时,您不会提供任何值:
INSERT INTO Users (pinConfirmed,Factor,DateUtc,LockoutEnabled,AccessCount,EmailConfirmed)
values ('false', 'false','1/1/2018' ,'false','0','false')
这就是为什么您会得到一个错误。 NOT NULL
表示必需。您没有提供。
您有几种选择:
INSERT
时为列提供值IDENTITY
,在MySQL中,将列设置为AUTOINCREMENT
,尽管两者其中有 integer 列,而您的是 character 数据,因此您还需要更改数据类型)NULL
,它当然仅在一次下起作用,因为这是主键列,并且值必须唯一。答案 2 :(得分:0)
如果您进入表设计器,在Id列的属性中,您将看到Identity Specification属性集,如下所示:
对此进行扩展,并将(身份)设置为是。这会将“身份增量”和“身份种子”的默认值设置为1
现在保存表格,一切就绪。