sql - 违反 UNIQUE KEY 约束无法在对象中插入重复的键

标签 sql sql-server vb.net

------------------------这是我更新表的sql过程---------------- ---------

create procedure sp_stepUpdate
@ID int,
@StepOrder int

AS
BEGIN  


IF OBJECT_ID('tempdb.dbo.#UpdateBatch','u') IS NOT NULL
begin
DROP TABLE #UpdateBatch
end

IF OBJECT_ID('tempdb.dbo.#UpdateBatch2','u') IS NOT NULL
begin
DROP TABLE #UpdateBatch2
end

create table #UpdateBatch2
(
ID int,
StepOrder int
)

insert into #UpdateBatch2 values (@ID,@StepOrder)

Select *,ROW_NUMBER() OVER(ORDER BY ID) as newIID into #UpdateBatch
from #UpdateBatch2

set identity_insert [ODM_BatchSteps] ON

Update [ODM_BatchSteps]
set [StepOrder] = newIID
From #UpdateBatch 
where [ODM_BatchSteps].ID = #UpdateBatch.ID

set identity_insert [ODM_BatchSteps] off
END
go

----------------这是我在程序中从列表中获取新订单的代码------

    connection.Open()


    For Each item As ListViewItem In ListView1.Items

        Dim command As SqlCommand = New SqlCommand("sp_stepUpdate", connection)
        command.CommandType = CommandType.StoredProcedure
        command.Parameters.AddWithValue("@ID", item.SubItems(0).Text)
        command.Parameters.AddWithValue("@StepOrder", item.SubItems(1).Text)
        command.ExecuteNonQuery()
    Next

当尝试使用 ListView 中的新订单更新表时,我遇到了违反 UNIQUE KEY 约束的情况

------------这是我尝试更新的订单表-----

    create table [dbo].[ODM_BatchSteps]
(
[ID] uniqueidentifier primary key not null default newid(),
[StepOrder]int ,
[StepType]int,
[StepGrid]nvarchar(max),
[BatchGrid]int,
foreign key (BatchGrid) REFERENCES ODM_Batches(ID)
)

最佳答案

该错误意味着您正在尝试插入数据库中已存在的键值(id?)。 我只看到一条插入语句,因此您最好检查一下传递给它的值..

关于sql - 违反 UNIQUE KEY 约束无法在对象中插入重复的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21377125/

相关文章:

以天为单位的 SQL 日期差异结果错误

vb.net - vb.net 中 csv 的 odbc 阅读器

asp.net - VB.net gridview 显示的数据比我想要的多

mysql - 错误 1093 : MySQL can’t specify target table for update in FROM clause

sql - 将 ASCII(子)集传输到表

sql-server - Azure 可用性集 : IIS + SQL Server

c# - 在 C# 中使用 VB Net 制作的 VB 库

mysql - 子查询的 group by 计数与 group by 列上的不同计数之间的差异

mysql - 使用 select sql 将两个表显示为一个表

java - 插入前检查重复数据