【发布时间】:2018-12-14 22:55:17
【问题描述】:
场景
我有一个数据库,其中包含两个名称不同的 EQUAL 表(我们称它们为 Table1 和 Table2)。 Table1 通过 C# 程序定期向 Table2 发送一堆数据。 其中一些数据已经在 Table2 中,因此在 cmd 上会弹出一个简单的异常,然后程序继续运行。我不想要重复的数据,所以这很好,程序完全按照我想要的方式运行。
我的问题
我想知道 C# 查询函数是否可以像在这种情况下那样管理如此多的异常(20% 的插入是重复的并指向异常)。因为尽管程序可以运行,但该功能可能对程序本身效率低下或“有害”(以某种未知方式,例如导致更多延迟)。
如果是这样,我如何通过简单的“INSERT INTO”查询来解决这个问题? 是否有任何命令可以使它成为“执行此操作的好方法”?
【问题讨论】:
-
你需要寻找 MERGE 命令。您可以决定遇到重复时该怎么做,如果不存在则插入(删除/更新可以存根)。
-
@eocron 我很确定这是防止它的最佳选择。但是存根似乎有点生锈,不是吗?应该存在对重复项不执行任何操作的选项。如果没有,请发布您的答案
-
MySQL 不支持 MERGE @eocron
-
我想知道为什么当列相同时你需要两个表..
-
是的,我知道
INSERT INTO ... ON DUPLICATE KEY UPDATE ...@T.S.只是告诉 MySQL 不支持MERGE的未来读者可能会阅读MERGE并可能认为他们可以在 MySQL 中使用它。