SQL Server:"无法将值NULL插入列" - 在标识栏上

时间:2014-09-03 22:50:38

标签: sql sql-server tsql sql-server-2012

我将数据插入到一个名为unique_id的标识列的表中。我将unique_id列从插入中删除,假设该值将从列上的标识配置中播种。

Insert声明:

INSERT INTO table_name (column_1, column_2, column_3, processed_dt)
VALUES ('A', 'B', 'C', GETDATE());

错误:

  

无法将值NULL插入列" unique_id',table' db.dbo.table_name';列不允许空值。 INSERT失败。

当我双击SQL Server Management Studio中的unique_id列时,我看到设置了以下值:

  • 身份:真实
  • 身份种子:1
  • 身份增量:1

哪些其他配置可能导致身份种子不能自动使用?

更新

根据我看到的一些建议,我想补充一点,我们的供应商将这个架构从Oracle转换为SQL Server。我猜测该过程的一部分必须包括将Oracle Sequences转换为SQL Server Identity列。正在被打破的东西"使用标识栏肯定是可能的。

我肯定在正确的数据库,表格和列上。此列上的Identity今天未创建,它是在几周前创建的。

供应商是否有任何配置可以禁用种子值的自动分配并强制开发人员“取”"手动下一个种子值?

1 个答案:

答案 0 :(得分:0)

SQL Server存储要使用的种子/ nextID值。我想知道Oracle的转换是否忽略了设置该值。尝试在该表上使用以下命令来检查它的种子值是什么:

DBCC CHECKIDENT ( table_name, NORESEED )

可能它实际上是null,这导致错误。然后,您可以使用相同命令的变体来“重新设定”或设置要使用的下一个值。

有关更多信息和选项: http://msdn.microsoft.com/en-us/library/ms176057(v=sql.110).aspx