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
表添加两行(包含 name
和 created
列 – 后者具有默认时间戳)。 主键列 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):
role
表。id
列并访问其列属性。这将 id
配置为为每个新行自动递增,从而消除手动主键规范。
以上是为什么我在SQL Server中获得'无法将值null插入列'ID'”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!