c# - 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
我在线上遇到异常错误
解决方案
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)
推荐阅读
- xaml - 应用固定/静态 Listview 高度后,Listview 项目不滚动
- apache-kafka - kafka 消息键作为 HDFS 中的关键字段/列
- html - 填充两个 HTML 元素时如何触发方法?
- camera - 与 Windows 10 相比,v4l2 手动曝光不起作用
- android - 用于室内定位的信标三边测量
- regex - 多个分隔符拆分后如何获取分隔符?
- arduino - 输入Arduino的两个高状态之间的时间
- amazon-s3 - 将带有 Cloudfront 内容的 S3 提供给客户端
- r - 如果在 R 中重复所有值,则用 NA 填充列
- javascript - ReferenceError:属性'_globalSetter'不存在,js引擎:hermes