使用C API的MYSQL锁定表行为

时间:2018-09-20 09:09:31

标签: c++ mysql linux locking

前言

我正在使用 MySQL C API 从C ++使用MySQL。 我正在使用的应用程序由多个并发的进程(分叉)组成,并且使用 C API多语句执行(又名{{ 1}})。

代码(无详细信息)

Process#1必须在表中插入一条记录,Process#2必须在发生事件时选择它。

进程1执行以下操作:
CLIENT_MULTI_STATEMENTS
流程2执行以下操作:
// ...
mysql_query("lock tables `aaa` write, `bbb` write");

mysql_query( /* select something from `aaa` */ );
/* retrieve, use and dispose result */
mysql_query( /* insert something into `bbb` */ );
mysql_query( /* update records into `aaa` */ );

mysql_query("unlock tables");

// DO SOMETHING THAT TRIGGERS PROCESS#2 SELECT STATEMENT HERE
//...

问题

有时,Process#2实际上会检索预期的结果,而有时它返回零行,也就是找到匹配的零行。

问题

为什么Process#2中的 select 语句不等待? 我应该专注于使用MySQL API /查询的方式还是与此无关?

0 个答案:

没有答案