0

我需要在表 foo 中插入新行。但在插入这些数据之前,我需要检查是否已经为相应的用户名插入了一行。如果已经插入,那么我需要用新数据更新当前数据。

我知道使用 PHP if 条件来做到这一点。但我喜欢只用一行来使用 MySQL 函数/语句来做到这一点。请问有人可以帮我吗?

例如,请使用以下语句。它应该被更新。

$in = "insert into foo(username, text) values('user-x', 'user-x-text')";
Mysql_query($in);

在搜索类似问题时,我得到了这篇文章:带有答案的类似问题。但是我很难使用该解决方案,因为我不知道,该代码片段发生的过程会降低服务器资源,例如速度等。因为这个脚本每个用户将运行大约 20 次。

谢谢你。

4

1 回答 1

1

我认为INSERT ... ON DUPLICATE KEY UPDATE应该可以工作

使用户名成为UNIQUE索引,它不必是主键

如果我没记错的话,只有当您提供的任何列(主键或唯一索引)发生冲突时,DUPLICATE KEY 才会运行。在您的情况下,文本列两者都不是,因此它会因冲突而被忽略。

INSERT... ON DUPLICATE KEY UPDATE对MySql 文档确认的唯一索引起作用

于 2013-01-30T16:23:24.707 回答