gpt4 book ai didi

sql - 在 SQL Server 2005 中遇到异常时继续在临时表中插入数据(也适用于 2008)

转载 作者:行者123 更新时间:2023-12-04 05:28:32 28 4
gpt4 key购买 nike

我有 2 个简单的表

+------|---------|----------+
+ ID | Value | Test +
+------|---------|----------+
+ 3 | Test | 12345 +
+ 4 | MyVal | 56789 +
+ 5 | Another| 101010 +
+------|---------|----------+



+------|---------|----------+
+ ID | Value | Test +
+------|---------|----------+
+ 3 | Test | 12345 +
+ 7 | MyVal12| 56789 +
+ 5 | Another| 101010 +
+------|---------|----------+
ID来自两个表的主键。

在我的存储过程中,我创建了一个这样的临时表:
CREATE TABLE #tempTable(
ID int NOT NULL PRIMARY KEY NONCLUSTERED,
FIELD VARCHAR(255))

以及我的程序部分存储在 try-catch 中块:
BEGIN TRY
INSERT INTO #tempTable(ID, FIELD)
EXEC sp_executesql @myCustomSql, @paramList, @param1, @param2 ...
END TRY

BEGIN CATCH
// what to put here ?
END CATCH

我想向我的临时表中添加行(您将看到 ID = 3 和 5 的重复行)并且我想继续添加。最后,我想为表格提供以下内容:
+------|---------+
+ ID | FIELD +
+------|---------+
+ 3 | Test +
+ 4 | MyVal +
+ 5 | Another+
+ 7 | MyVal12+
+------|---------+

我在这里给出了一个简化的例子,在我的数据库中,我有超过 10 万行和许多列。

谢谢

最佳答案

要忽略(带有警告)尝试插入重复键而不是引发错误并使整个语句失败,您可以使用 IGNORE_DUP_KEY 选项。

CREATE TABLE #tempTable
(
ID INT NOT NULL PRIMARY KEY NONCLUSTERED WITH (IGNORE_DUP_KEY = ON),
FIELD VARCHAR(255)
)

关于sql - 在 SQL Server 2005 中遇到异常时继续在临时表中插入数据(也适用于 2008),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12915765/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com