首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试插入具有主键自动增量但得到错误的表

尝试插入具有主键自动增量但得到错误的表
EN

Stack Overflow用户
提问于 2015-08-03 14:49:42
回答 3查看 1.4K关注 0票数 0
代码语言:javascript
复制
INSERT INTO Locality(versionNo,localityName, localityType, constiCode, deleteFlag,
    createdOn, lastUpdate,updatedBy) 
SELECT 1, localityName, Localitytype, constituencyCode + '' + regionCode, 1,
    CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, CURRENT_USER
FROM dbo.MasterTable.

Msg 515, Level 16, State 2, Line 1
Cannot insert the value NULL into column 'localityCode', table 'GovMaster.dbo.Locality';
column does not allow nulls. INSERT fails.

我想插入,但是LocalityCode是主键,不应该为null。但我在上面发现了那个错误。localityCode是主键,不能为空。我希望localityCode是自动生成的,它应该对insert执行一个自动增量。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-03 15:01:41

您没有插入localityCode的值,字段列表中缺少它:

代码语言:javascript
复制
INSERT INTO Locality(versionNo,localityName, localityType, constiCode, deleteFlag,
    createdOn, lastUpdate,updatedBy) 

将字段保留在INSERT列表之外时,它将获得一个默认的NULL值。如果它是一个自动递增的ID字段,那么排除它是正确的,但在您的情况下并非如此。您需要提供一个值,或者更改模式以允许该字段的NULL值,或者使其成为一个自动递增的字段。

票数 1
EN

Stack Overflow用户

发布于 2015-08-03 15:04:03

简单地说,你之所以会犯这个错误,是因为:

问题:

  • 在Locality表中有一个列名localityCode定义为NOT NULL,它似乎不是一个自动递增的字段。
  • 其次,在下面的insert语句中没有传递任何值,因此默认情况下它将空值传递给localityCode列。

解决方案:

  • 理想情况下,您希望在insert语句中显式地向localityCode传递一些非空值。
  • 另一个选项是将localityCode列的null属性更改为接受NULL值。
  • 或者,如果要将localityCode列设置为自动增量字段,则可能需要查看以下内容:Adding an identity to an existing column

希望这能有所帮助!

票数 0
EN

Stack Overflow用户

发布于 2015-08-03 15:26:07

谢谢你们。

我删除了现有的列并使用localityCode INT标识(1,1)重新创建了它,然后将列更改为主键。

:-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31790386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档