相关疑难解决方法(0)

什么可能导致插入错误的 ID?

我有一个 SQL Server 2008 服务器(版本 10.0.5500)。本周早些时候,我在一个已经有数据的表上运行了这个:

delete from dbo.table
go    
dbcc checkident('dbo.table',reseed,0)
Run Code Online (Sandbox Code Playgroud)

当用户稍后创建新记录时,不知何故将 ID 0 插入到 ID 列中,而不是 SQL Server 通常放入的 1,如果为 ID 配置了 identity(1,1)。

这导致了一些奇怪的问题,但正如预期的那样,清除数据并运行重新种子会导致插入 1。我无法复制这个问题。

作为参考,这里是我们的保存 sp 的一般格式:

alter procedure dbo._TableSave
    @pk_id int,
    @field varchar(50)
as
    if (@pk_id is null)
    begin
        set nocount on;

        insert into dbo.Table
        (
            Field
        )
        values
        (
            @field
        );
        select scope_identity();
    end
    else
    begin
        update dbo.Table
        set Field=@field
        where PK_ID=@pk_id

        select @pk_id
    end
Run Code Online (Sandbox Code Playgroud)

有谁知道什么会导致 SQL Server 在 ID 应该是 1 的时候在 …

sql-server-2008 sql-server identity

7
推荐指数
2
解决办法
3145
查看次数

标签 统计

identity ×1

sql-server ×1

sql-server-2008 ×1