首页 > 解决方案 > SQL Server - 重复键错误

问题描述

我正在运行一个 SQL 存储过程,它将记录从 2 个不同的表中插入到一个表中。由于正在插入的表上存在主键约束,因此Duplicate key was ignored会引发异常。但是当我从我的 C# windows 窗体应用程序调用 SP 时,这会引发异常并停止执行。我该如何处理?我的 C# 代码如下:

qry = "Exec Database.dbo.spname '" + searchvalue + "'";

if (rs.State == 1) { 
   rs.Close(); 
}

rs.Open(qry, sqltbl.GetSqlConnection());

rs.Open我在线上遇到异常错误

标签: c#sqlsql-server

解决方案


Database.dbo.spname似乎正在从您正在执行的过程中引发异常。例外不是您应该忽略或隐藏在沙发下的东西。

您可能有如下声明:

INSERT INTO SomeTable (
    KeyColumn,
    ColumnName)
SELECT
    I.InsertingKeyColumn,
    I.ColumnName
FROM
    SomeOtherTable AS I

在尝试插入之前使用NOT EXISTS检查记录的存在性,并且不会弹出错误。

INSERT INTO SomeTable (
    KeyColumn,
    ColumnName)
SELECT
    I.InsertingKeyColumn,
    I.ColumnName
FROM
    SomeOtherTable AS I
WHERE
    NOT EXISTS (SELECT 'not yet in SomeTable' FROM SomeTable AS S WHERE I.InsertingKeyColumn = S.KeyColumn)

推荐阅读