首页 >数据库 >mysql教程 >为什么我在SQL Server中获得'无法将值null插入列'ID'”错误?

为什么我在SQL Server中获得'无法将值null插入列'ID'”错误?

Barbara Streisand
Barbara Streisand原创
2025-01-24 11:02:13589浏览

Why Am I Getting the

SQL Server 的“无法将 NULL 插入列 'id'”错误:综合指南

将数据插入 SQL Server 数据库需要提供所有列的值,尤其是主键。 如果列被指定为 NOT NULL 并且缺少默认值,则尝试插入 NULL 将触发错误。

场景:插入角色表

考虑这个 SQL 语句:

<code class="language-sql">INSERT INTO role (name, created) VALUES ('Content Coordinator', GETDATE()), ('Content Viewer', GETDATE())</code>

这会尝试向 role 表添加两行(包含 namecreated 列 – 后者具有默认时间戳)。 主键列 id 被省略。

错误分解

SQL Server 要求显式主键值或自动生成。 由于 id 未指定且没有默认值,因此 SQL Server 会分配它 NULL。 但是,id 被定义为 NOT NULL,从而防止 NULL 插入。 结果错误消息是:

<code>Msg 515, Level 16, State 2, Line 1
Cannot insert the value NULL into column 'id', table 'CMT_DEV.dbo.role'; column does not allow nulls. INSERT fails.
The statement has been terminated.</code>

解决方案:自动递增来救援

解决方案是确保id始终收到有效值。 最常见的方法是使用自动增量:

使用 SQL Server Management Studio (SSMS):

  1. 在设计模式下打开role表。
  2. 选择 id 列并访问其列属性。
  3. 在“身份规范”下,将“是否身份”设置为“是”,将“身份增量”设置为 1。

这将 id 配置为为每个新行自动递增,从而消除手动主键规范。

以上是为什么我在SQL Server中获得'无法将值null插入列'ID'”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn