【发布时间】:2013-11-18 04:48:20
【问题描述】:
我希望能够使用“replace into”语句更新具有相同架构的表。最后,我需要能够使用可能已更改的值更新一个大表。
这是我用来开始的查询:
REPLACE INTO table_name
(visual, inspection_status, inspector_name, gelpak_name, gelpak_location),
VALUES (3, 'Partially Inspected', 'Me', 'GP1234', 'A01');
我不明白的是数据库引擎如何知道什么是重复行,什么不是?这些数据非常重要,我不能冒数据被损坏的风险。是否像“如果列出的所有列都具有相同的值,则它是重复行”那么简单?
我只是想找出一种有效的方法来做到这一点,这样我就可以在一分钟内更新超过 45,000 行。
【问题讨论】:
-
您是否找到了一种在一分钟内无错误地更新和更多记录的方法?此查询是否正常运行?
-
我知道这个问题很长,但要记住,正如其他人在下面指出的那样,REPLACE 会执行 INSERT,但如果记录已经存在,它会执行 DELETE 然后 INSERT。人们不考虑的一个后果是,如果目标表是任何 PK/FK 关系中的 PK 表,那么对于有其他依赖于它们的记录的 DELETE 将失败(默认行为),或者如果关系具有 CASCADE DELETE 然后子表中的记录将被删除,之后不会再回来。
标签: mysql sql database replace