尝试在 mysql 中使用重复密钥

问题描述

我有这个代码

<cfquery >
        INSERT IGnorE INTO tblcustomers(CustomerCode,CustomerID,FirstName,LastName,lid,status) 
        VALUES(<cfqueryparam cfsqltype="varchar" value="#queryData.CustomerCode[currentRow]#">,<cfqueryparam cfsqltype="integer" value="#queryData.customerID[currentRow]#">,<cfqueryparam cfsqltype="varchar" value="#queryData.firstname[currentRow]#">,<cfqueryparam cfsqltype="varchar" value="#queryData.lastname[currentRow]#">,<cfqueryparam cfsqltype="integer" value="#queryData.LocationID[currentRow]#">,<cfqueryparam cfsqltype="integer" value="#queryData.status[currentRow]#">
            )
        </cfquery>

试图检查customerID是否存在,它应该做更新,因为customerID是唯一的

任何线索我该怎么做

解决方法

如果记录已经存档,您需要告诉数据库该怎么做。

INSERT INTO tblcustomers(CustomerCode,CustomerID,FirstName,LastName,lid,status) 
VALUES
(
        <cfqueryparam cfsqltype="varchar" value="#queryData.CustomerCode[currentRow]#">,<cfqueryparam cfsqltype="integer" value="#queryData.customerID[currentRow]#">,<cfqueryparam cfsqltype="varchar" value="#queryData.firstname[currentRow]#">,<cfqueryparam cfsqltype="varchar" value="#queryData.lastname[currentRow]#">,<cfqueryparam cfsqltype="integer" value="#queryData.LocationID[currentRow]#">,<cfqueryparam cfsqltype="integer" value="#queryData.status[currentRow]#">
)
ON DUPLICATE KEY UPDATE
CustomerCode = <cfqueryparam cfsqltype="varchar" value="#queryData.CustomerCode[currentRow]#">,CustomerID = <cfqueryparam cfsqltype="integer" value="#queryData.customerID[currentRow]#">,FirstName = <cfqueryparam cfsqltype="varchar" value="#queryData.firstname[currentRow]#">,LastName = <cfqueryparam cfsqltype="varchar" value="#queryData.lastname[currentRow]#">,lid = <cfqueryparam cfsqltype="integer" value="#queryData.LocationID[currentRow]#">,status = <cfqueryparam cfsqltype="integer" value="#queryData.status[currentRow]#">