我正在用 C++ 编写一个程序,通过 MySql C++ 连接器访问 MySQL 中的表。
我从用户那里检索记录(通过 GUI 或 Xml 文件)。
这是我的问题:
我应该先在表中搜索 给定的记录,然后追加 不存在,
或者追加记录,让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 UPDATE
或 INSERT IGNORE
。
如果记录已经存在,前者会更新记录,后者什么都不做。
先搜索表效率不高,因为它需要两次往返服务器:第一次搜索,第二次插入(或更新)。
上面的语法在一个句子中做同样的事情。
关于MySQL:追加记录:查找然后追加或仅追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2163780/