我有唯一字段uniq_field的表。什么方法添加更好 - 首先检查是否存在具有唯一值的记录,或者只是添加记录和mysql将自行检查?
答案 0 :(得分:2)
这取决于你在重复的情况下要采取的行动 可能的解决方案可以在这样的伪代码中显示
switch action
case "do nothing":
INSERT IGNORE
case "delete existing then add new one":
REPLACE INTO
case "update existing":
ON DUPLICATE UPDATE
default:
select first and then apply necessary logic
答案 1 :(得分:1)
这取决于您希望如何在代码中处理它。
如果您只是想确保该元素存在,您可以执行所谓的插入 - 重复键更新 - 这意味着如果该行已经存在则会被替换 - 但如果不存在,则会更新。
有关该主题的更多信息,请访问:http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html
答案 2 :(得分:1)
这张桌子好
+--------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| id | int(11) | NO | PRI | 0 | |
| unique | int(11) | NO | UNI | NULL | |
+--------+---------+------+-----+---------+-------+
此代码返回false
$result = mysql_query("insert into tab1 values(1, 1), (2, 1)");
echo ($result)?($result):"false";
此代码返回1
$result = mysql_query("insert into tab1 values(1, 1), (2, 2)");
echo ($result)?($result):"false";
似乎如果要显示消息,则应检查数据库中的值并显示错误。如果您不想显示实际导致的错误,那么您可以直接查询。