我将数据插入到一个名为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
列时,我看到设置了以下值:
哪些其他配置可能导致身份种子不能自动使用?
更新
根据我看到的一些建议,我想补充一点,我们的供应商将这个架构从Oracle转换为SQL Server。我猜测该过程的一部分必须包括将Oracle Sequences
转换为SQL Server Identity
列。正在被打破的东西"使用标识栏肯定是可能的。
我肯定在正确的数据库,表格和列上。此列上的Identity
今天未创建,它是在几周前创建的。
供应商是否有任何配置可以禁用种子值的自动分配并强制开发人员“取”"手动下一个种子值?
答案 0 :(得分:0)
SQL Server存储要使用的种子/ nextID值。我想知道Oracle的转换是否忽略了设置该值。尝试在该表上使用以下命令来检查它的种子值是什么:
DBCC CHECKIDENT ( table_name, NORESEED )
可能它实际上是null,这导致错误。然后,您可以使用相同命令的变体来“重新设定”或设置要使用的下一个值。
有关更多信息和选项: http://msdn.microsoft.com/en-us/library/ms176057(v=sql.110).aspx