SQL替换成问题

Mat*_*att 7 mysql sql replace

使用Replace Into,如果我有两个字段.FirstName LastName.该表中有John Smith,如果我要运行REPLACE INTO tblNames(FirstName,LastName)VALUES(John,Jones)会用Jones代替Smith,还是创建一个新名字?

是什么决定它的更新还是插入?

Qua*_*noi 8

REPLACE
INTO    tblNames (FirstName, LastName)
VALUES  ('John', 'Jones')
Run Code Online (Sandbox Code Playgroud)

如果有任何一个唯一约束样的FirstName,LastName或者其组合,并且它被破坏,记录被删除,并用新值插入.

如果满足任何条件,记录将被替换:

  • FirstName是的UNIQUE,John表中有一个,
  • LastName是的UNIQUE,Jones表中有一个,
  • FirstName, Lastname是的UNIQUE,John Jones表中有一个.

请注意,REPLACE操作INSERT可能跟随a DELETE,这将始终影响表.

在较新版本中MySQL,您应该使用INSERT … ON DUPLICATE KEY UPDATE.


Dan*_*haw 0

这取决于表上的主键和/或唯一约束。如果没有主键或唯一约束,则与基本的 INSERT 语句没有什么不同。

该文档给出了相当清晰的解释:http://dev.mysql.com/doc/refman/5.0/en/replace.html