如何避免数据重复插入?

最近我发布了一个问题 ,它包含一些语法错误,现在代码运行没有错误,感谢@Arulkumar。

但现在我面临一个更多的问题,从Excel表中的数据正确地存储到SQL Server数据库,但是当我按刷新button,或者如果我再次在我的应用程序中的该链接,数据在数据库中重复。 又意味着它从excel中检索值并在数据库中再次存储相同的数据。

我怎样才能避免数据重复。 任何人都可以帮我解决这个问题吗? 代码和excel表单示例在上面提到的链接中。

你需要MERGE语句

request.query('MERGE [mytable] as target USING (SELECT SalesPersonID, TerritoryID FROM OPENROWSET(' + '\'Microsoft.ACE.OLEDB.12.0\', \'Excel 12.0;Database=D:\\sample\\test\\data\\1540_OPENROWSET_Examples.xls;HDR=YES\', ' + '\'SELECT SalesPersonID, TerritoryID FROM [SELECT_Example$]\')' + ' ) as source' + ' ON target.SalesPersonID = source.SalesPersonID' + ' WHEN MATCHED THEN UPDATE SET TerritoryID = source.TerritoryID' + ' WHEN NOT MATCHED THEN INSERT (SalesPersonID, TerritoryID) VALUES (source.SalesPersonID, source.TerritoryID);' ,function(err,recordset){ if(err) console.log(err) 

如果已经存在具有相同SalesPersonID行,则它将更新TerritoryID如果mytable没有匹配,则插入行。

如果你需要join这两个领域改变这一点:

 ON target.SalesPersonID = source.SalesPersonID 

对此:

 ON target.SalesPersonID = source.SalesPersonID AND target.TerritoryID = source.TerritoryID 

之后 – 删除这个string,因为它不再需要:

 'WHEN MATCHED THEN UPDATE SET TerritoryID = source.TerritoryID' +