【问题标题】:Update Duplicate Error, Need assistance to fix couple lines of code更新重复错误,需要帮助来修复几行代码
【发布时间】:2026-02-14 18:00:01
【问题描述】:

我一直在尝试插入数据并在存在 dup 时进行更新。这是我的代码。所有这些字段都是键。每个都是唯一的,如果有重复,所有三个字段都是一致的。一个 TrackingNumber 一个 TYPE 一个 NUMBE 等等。

    string statement = 
   "INSERT INTO SOP10107 VALUES(@SOPNUMBE, @SOPTYPE, @Tracking_Number) 
    ON DUPLICATE KEY 
        UPDATE(@SOPNUMBE = SOPNUMBE + 1, 
               @SOTYPE = SOTYPE + 1, 
               @Tracking_Number = Tracking_Number + 1 )";

由于我是新手,我不确定这是否正确(或几乎正确),我认为基本格式是正确的,但具体的语法和措辞我遇到了一些麻烦。错误会回来并说“ON”有问题。这很可能是格式错误。有人愿意帮助我或对此事有所了解吗?提前非常感谢您!

【问题讨论】:

    标签: c# asp.net sql sql-server-2008 visual-studio


    【解决方案1】:

    您可以在 SQL 2008 中使用新的 MERGE 语句

    MERGE INTO SOP10107 B
    USING (
      SELECT sopnumbe,sotype,tracking_Number  FROM SOP10107 ) E
    ON (B.tracking_number = E.tracking_number)
    WHEN MATCHED THEN
      UPDATE SET B.SOPnumbe  = B.Sopnumber +1,
             B.sotype = B.Sotype +1,
             B.tracking_number = B.tracking_number +1
    WHEN NOT MATCHED THEN
      INSERT (sopnumbe,sotype,tracking_Number )
      VALUES (@SOPNUMBE, @SOPTYPE, @Tracking_Number);
    

    MERGE Command in SQL

    【讨论】:

    • 嘿 Sparky,非常感谢您抽出时间帮助我。这对我的项目有很大帮助!非常感谢。如果您有任何问题,我会在第二天通知您!再次感谢!
    【解决方案2】:

    不能将ON DUPLICATE KEY 与 SQL Server 2008 一起使用。只能与 MySql 一起使用。

    请在此处查看:

    Does SQL Server Offer Anything Like MySQL's ON DUPLICATE KEY UPDATE

    【讨论】: