MySQL:追加记录:查找然后追加或仅追加

标签 mysql database mysql-connector

我正在用 C++ 编写一个程序,通过 MySql C++ 连接器访问 MySQL 中的表。

我从用户那里检索记录(通过 GUI 或 Xml 文件)。

这是我的问题:

  1. 我应该先在表中搜索 给定的记录,然后追加 不存在,

  2. 或者追加记录,让MySQL 追加记录是否唯一?

这是我的示例表:

mysql> describe ing_titles;
+----------+----------+------+-----+---------+-------+
| Field    | Type     | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| ID_Title | int(11)  | NO   | PRI | NULL    |       |
| Title    | char(32) | NO   |     | NULL    |       |
+----------+----------+------+-----+---------+-------+

根据判断,我正在寻找一种能让我的程序快速响应用户的解决方案。

在开发过程中,我有小表(少于 5 条记录),但我希望在正式发布应用程序时它们会增长。

仅供引用:我在 Windows XP 和 Vista 上使用 Visual Studion 2008、C++、wxWidgets 和 MySQL C++ Connector。

最佳答案

UNIQUE 约束标记有问题的字段并使用 INSERT ... ON DUPLICATE KEY UPDATEINSERT IGNORE

如果记录已经存在,前者会更新记录,后者什么都不做。

先搜索表效率不高,因为它需要两次往返服务器:第一次搜索,第二次插入(或更新)。

上面的语法在一个句子中做同样的事情。

关于MySQL:追加记录:查找然后追加或仅追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2163780/

相关文章:

PHP 比较两个 while 循环的结果

python - (Python/JSON/MySQL) 关于 JSON 格式的财务数据不会传输到数据库的建议

mysql - 在设置具有外部表引用的数据库时,我应该注意哪些注意事项?

visual-studio-2017 - 可以在 vs 2017 上构建 Mysql Connector C++ 吗?

c++ - 如何将 MySQL 连接器/C++ 1.1 添加到 Visual Studio 2010 项目?

php - 通过 url 查询从 mysql 中删除。错误 "Query was empty"

php - 根据纬度/经度选择20公里以内

php - Mysql仅限制某一列的空行

mysql - JPA 中的跨数据库连接

c++ - MySQL 连接器 C++ 64 位从 Visual Studio 2012 中的源构建