如果记录存在则更新,否则写入新记录?

3
我试图执行这个查询,当它找到$serial的记录时,可以更新它。或者,如果该序列号不存在,则可以写入新记录。
我得到语法错误,但对我来说看起来很好。非常确定ON DUPLICATE KEY UPDATE是正确的方法,但我错过了什么...
$query = "INSERT INTO `".$sys_id."` (serial, status) VALUES ('98745', 'active') ON DUPLICATE KEY UPDATE";
$result = mysql_query($query) or die(mysql_error());

1个回答

4
你需要告诉它要更新什么 (详见手册)。
因此:
$query = "INSERT INTO `".$sys_id."` (serial, status) VALUES ('98745', 'active') 
           ON DUPLICATE KEY UPDATE status=VALUES(active)";

(我假设关键字是serial
注意:此处的“key”指的是密钥或关键字,与“键盘按键”无关。

如果您正在向许多从服务器复制数据,这种类型的查询可能会在复制线程上创建问题。在这种情况下,您可能需要拆分查询以减少复制二进制日志的大小。这是我们过去遇到的一些问题。 - FoneyOp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接