【发布时间】:2021-07-16 15:07:10
【问题描述】:
我有一个 SSIS 工作流,我在其中填充了一个 SQL Server 表(260 个数据行)。在这个 SSIS 工作流中,我还实现了一个查找来检查原始行是否已更改。如果是这样,它应该通过存储过程在 SQL Server 表中更新它。
这是我的存储过程:
ALTER PROCEDURE [dbo].[Update_MC_Countries]
@alphacode3char NVARCHAR(10),
@alphacode NVARCHAR(10),
@numcode NVARCHAR(10),
@german NVARCHAR(150),
@english NVARCHAR(150),
@region NVARCHAR(10),
@qmr NVARCHAR(10)
AS
BEGIN
SET NOCOUNT ON;
UPDATE [dbo].[MasterData_EDL_MC_Countries]
SET [alphacode3char] = @alphacode3char,
[alphacode] = @alphacode,
[numcode] = @numcode,
[german] = @german,
[english] = @english,
[region] = @region,
[qmr] = @qmr
我收到此错误:
OLE DB 记录可用。
来源:“Microsoft SQL Server Native Client 11.0”
结果:0x80040E2F
说明:“违反 PRIMARY KEY 约束 'PK_MasterData_EDL_MC_Countries'。无法在对象 'dbo.MasterData_EDL_MC_Countries' 中插入重复键。重复键值为 (DEU)。”。
为什么代码要插入这一行而不是更新它?
我不明白。任何帮助表示赞赏!
【问题讨论】:
-
你的更新语句中真的没有 WHERE 条件吗?
-
no where 子句会将每一行更新为相同的内容
-
感谢两位。缺少 where 子句!
-
此名称
@alphacode3char与数据类型NVARCHAR(10)相矛盾。您的代码绝不应该撒谎或误导。
标签: sql-server ssis sql-update