mySQL“;替换为“:在这种情况下有什么影响吗

mySQL“;替换为“:在这种情况下有什么影响吗,mysql,Mysql,我负责将一些旧代码移植到一个新的平台上,我正在考虑一个让我非常困惑的问题。我想我对REPLACE INTO的功能很熟悉,但这让我感到不确定。mySQL查询是: REPLACE INTO theTable SET value1 = ?, value2 = ? 我的理解是,只有当这些列被定义为唯一时,这才有效果。表的表定义如下所示: CREATE TABLE `theTable` ( `value1` int(11) unsigned DEFAULT NULL, `value2` int(

我负责将一些旧代码移植到一个新的平台上,我正在考虑一个让我非常困惑的问题。我想我对REPLACE INTO的功能很熟悉,但这让我感到不确定。mySQL查询是:

REPLACE INTO theTable SET value1 = ?, value2 = ?
我的理解是,只有当这些列被定义为唯一时,这才有效果。表的表定义如下所示:

CREATE TABLE `theTable` (
  `value1` int(11) unsigned DEFAULT NULL,
  `value2` int(11) unsigned DEFAULT NULL,
  KEY `value1` (`value2`),
  KEY `value2` (`value2`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

我插入了一行,该行与现有行完全相同,但什么也没有发生(插入了新行,旧行仍然存在)。。。是我遗漏了什么,还是原来的开发人员只是做了一些完全无用的事情?

就像你说的:如果存在唯一约束,它将只替换(实际上是删除+插入)行。在您的表中没有任何行。

如您所说:如果存在唯一约束,它将只替换(实际上是删除+插入)行。在您的表中没有。

来自MySQL手册:

“替换”的工作原理与“插入”完全相同, 除了如果表中有一个旧的行 具有与的新行相同的值 主键或唯一索引,旧 在删除新行之前删除行 插入

请注意,除非表中有 主键或唯一索引,使用 REPLACE语句毫无意义。信息技术 变得相当于INSERT,因为 没有可用于检索的索引 确定新行是否重复 另一个

因此,您需要添加
唯一键
,以使其工作。

来自MySQL手册:

“替换”的工作原理与“插入”完全相同, 除了如果表中有一个旧的行 具有与的新行相同的值 主键或唯一索引,旧 在删除新行之前删除行 插入

请注意,除非表中有 主键或唯一索引,使用 REPLACE语句毫无意义。信息技术 变得相当于INSERT,因为 没有可用于检索的索引 确定新行是否重复 另一个

因此,您需要添加
唯一键
,以使其正常工作