如何在mysql中使用REPLACE替换数据

REPLACE 将删除旧的并插入新的。

REPLACEINTOtable_name(column1 ,...)VALUES(value1 ,...);
REPLACEINTOtable_nameSETcolumn1 =value1 ,...;
用户表、id 主键、email 唯一索引。

REPLACEINTUsers(id,name,email)VALUES(1 ,'Bob','alice@example.com');
名称更改为 Bob。

当唯一键冲突时删除旧的并插入新的。

添加的 ID 将自动重置。

外键可以级联删除。

扳机点燃。

当数据是最新的且唯一键冲突时使用。

表必须有唯一的键。

在接收删除+插入行为时使用。

REPLACE 比 UPDATE 慢。

为未定义的字段设置默认值或 NULL。

相当于没有唯一键时的INSERT。

ONDUPLICATEKEYUPDATE 更好。

插入...ONDUPLICATEKEYUPDATE。

仅更新部分字段。

不要删除原始记录。

保存原始记录的其他值。

更好的性能。

更换完全更换。

ONDUPLICATEKEYUPDATE 部分更新。

称重。

mysql中replace的用法

嘿,我需要和你谈谈 REPLACE 的事情。
当我2 005 年第一次开始从事数据库工作时,确实遇到了很多陷阱。
REPLACE听起来很容易使用。
如果有冲突就更换,省事。

我在一个小项目中使用了它,然后在users表中,主键是id。
然后有一次,我制作了一个数组导入脚本,并考虑使用 REPLACE 来更新所有重复的 ID。
结果呢?有数百条线索。
起初我只是想改个音符什么的,但最后我把它们都毁了。
因为 REPLACE 删除整行然后插入。
当时真的很害怕,所以我必须赶紧后退,不然哭都来不及了。

REPLACE 和 INSERT 之间的区别是真实的。
2 008 年我在另一家公司就遇到过这种情况,写了一个简单的INSERT,结果却是主键冲突,整个脚本报错。
花了很长时间才纠正错误。
只需更改为 REPLACE 即可。
虽然慢了一些,但至少不会直接崩溃。

至于触发因素,我必须说实话。
我从来没有接触过这个,不敢乱说。
但我认为REPLACE不会触发,因为底层是先DELETE,然后INSERT,这与通常的INSERT逻辑不同。

使用时,主键或唯一索引是必需的,请记住这一点。
1 0 年前,我在一个旧系统上工作,发现该表没有主键。
我使用REPLACE结果插入了大量重复数据。
我花了很长时间才找到原因。
覆盖数据的风险也很高。
输入未指定列的默认值。
有时 NULL 不起作用。
它有客户数据。
本来就有一块不能空的领域。
我忘了具体说明。
结果REPLACE之后变成了空值。
实在是太尴尬了。

或者,更新重复密钥是一件好事。
2 01 2 年我换了一个新项目,要求更新一些地方。
就在那时我意识到 REPLACE 并不是最好的解决方案。
IN UPDATE DUPLICATE KEY 只能更改您要更改的内容,其余不变。

总的来说,REPLACE是个好东西,但是不要盲目使用。
如果只是想要简单的替换,表简单,主键明确,那么使用REPLACE就可以了。
如果你想要良好的控制,ON DUPLIATE KEY UPDATE 更合适。
请记住,在构建数据库时,不要掉以轻心,否则以后会遇到很多麻烦。