jcm*_*jcm 16 mysql sql replace
我正在做以下SQL教程:http://sql.learncodethehardway.org/book/ex11.html
在本练习中,作者在第二段中说:
在这种情况下,我想用另一个人替换我的记录但保留唯一ID.问题是我必须在事务中执行DELETE/INSERT以使其成为原子,或者我需要执行完全更新.
任何人都可以向我解释一下UPDATE的问题是什么,当我们选择REPLACE而不是UPDATE时?
UPDATE代码:
UPDATE person SET first_name = "Frank", last_name = "Smith", age = 100
WHERE id = 0;
Run Code Online (Sandbox Code Playgroud)
这是REPLACE代码:
REPLACE INTO person (id, first_name, last_name, age)
VALUES (0, 'Frank', 'Smith', 100);
Run Code Online (Sandbox Code Playgroud)
编辑:我想我有另一个问题是你为什么要做一个DELETE/INSERT,而不仅仅是引用部分讨论的UPDATE?
Pat*_*man 18
根据文档,区别在于:
REPLACE与INSERT的工作方式完全相同,只是如果表中的旧行与PRIMARY KEY或UNIQUE索引的新行具有相同的值,则在插入新行之前删除旧行.
它的作用是什么:
什么时候使用它可以对单独insert
和update
语句有用?
inserting
/ 时删除相关数据updating
,你可以使用replace
:它也会删除所有相关数据);insert
(不好的理由,好吧).小智 5
并非所有数据库引擎都广泛理解 First Replace。
第二次替换基于主键插入/更新记录。使用更新时,您可以指定更详细的条件:
UPDATE person SET first_name = 'old ' + first_name WHERE age > 50
Run Code Online (Sandbox Code Playgroud)
UPDATE 也不会创建记录。