Mysql 仅当表中不存在插入值时才发出插入值
我正在将电子表格读入查询。然后将这些值插入数据库表中。我只想在目标表中不存在一个值ie PartNumber时执行插入 我正在使用下面的代码首先检查副本。但是,在插入itemPN列时,我仍然遇到了重复的问题,该列不允许重复值 如果我刷新下面的页面,它将再插入几十个值,并由于另一个重复而挂起。如果我刷新它4次左右,它将插入我需要的117条记录。我不明白为什么代码有时有效,但有时失败。每次尝试时,它似乎都挂在同一行上。格式化变量的不同尝试产生了相同的结果Mysql 仅当表中不存在插入值时才发出插入值,mysql,orm,coldfusion,Mysql,Orm,Coldfusion,我正在将电子表格读入查询。然后将这些值插入数据库表中。我只想在目标表中不存在一个值ie PartNumber时执行插入 我正在使用下面的代码首先检查副本。但是,在插入itemPN列时,我仍然遇到了重复的问题,该列不允许重复值 如果我刷新下面的页面,它将再插入几十个值,并由于另一个重复而挂起。如果我刷新它4次左右,它将插入我需要的117条记录。我不明白为什么代码有时有效,但有时失败。每次尝试时,它似乎都挂在同一行上。格式化变量的不同尝试产生了相同的结果 <cfspreadsheet acti
<cfspreadsheet action="read"
src="#downloadDir#import.xls"
query="qxldata"
excludeheaderrow="yes"
columnnames="PartNumber,Name,Price,Category,IsActive,Location,Description,remarks,SubLocation">
<cfoutput query="qxldata" startrow="3">
<cfset xlPN=qxldata.PartNumber>
<cfquery name="noDup">
SELECT *
FROM Items
WHERE itemPN = #xlPN#
</cfquery>
<cfif NOT noDup.RecordCount EQ 1>
<cfscript>
//Insert a new item
item = new items();
item.setitemPN(PartNumber);
item.setitemName(Name);
item.setitemCategory(Category);
item.setitemDescription(Description);
item.setitemBarcodeName("bc"&PartNumber&".jpg");
item.setitemImageName(PartNumber&".jpg");
item.setitemReorderPoint(NumberFormat("", 0.00));
item.setitemReorderQuantity(NumberFormat("", 0.00));
item.setitemLocation(Location);
item.setitemSubLocation(SubLocation);
item.setitemLength(NumberFormat("", 0.00));
item.setitemWidth(NumberFormat("", 0.00));
item.setitemHeight(NumberFormat("", 0.00));
item.setitemRemarks(remarks);
item.setitemIsActive(IsActive);
item.setitemVendorID("1");
item.setitemPrice(NumberFormat(Price, 0.00));
EntitySave(item);
</cfscript>
</cfif>
</cfoutput>
谢谢你的关注 像这样进行故障排除:
<cfoutput query="qxldata" startrow="3" maxrows="3">
<cfset xlPN=qxldata.PartNumber>
#xlPN# <br>
</cfoutput>
为此:
WHERE itemPN = #PartNumber#
或者更好的方法是:
WHERE itemPN = <cfqueryparam cfsqltype="cf_sql_integer" value="#PartNumber#">
如果我输出:qxldata.PartNumber、PartNumber、noDup.RecordCount,我将获得与noDup RecordCount一起的成对数字。当一个错误抛出时,我将得到两组30323032,0。这些数字看起来是相同的,但我尝试了修剪等,以确保coldfusion对它们的查看是相同的。如果我在浏览器上点击refresh,mySQL会对插入的数字感到满意,但另一个会抛出错误。我更改了代码以匹配上一个WHERE语句,但处理在下一个循环中查找记录时似乎没有始终注意到第一次插入?
WHERE itemPN = #PartNumber#
WHERE itemPN = <cfqueryparam cfsqltype="cf_sql_integer" value="#PartNumber#">