Mik*_*lin 5 mysql select insert
我有多个这样的数据库连接情况:
db connection 1: INSERT xyz
(very short time passes)
db connection 2: SELECT [looking for xyz]
Run Code Online (Sandbox Code Playgroud)
有时会SELECT
发现xyz
而有时却找不到(因为它与不在同一个db连接上INSERT
)。如果我把sleep(1)
后INSERT then the SELECT
总能找到xyz
。
对于数据库连接1,如何使其等待,直到INSERT
完成并且新行可用于SELECTs
另一个数据库连接上运行?
我的桌子是innodb
。用例是在连接1上插入一个经过身份验证的会话ID,然后重定向到一个经过身份验证的页面,然后当对经过身份验证的页面的请求进入(在另一个连接上)时,我们会寻找会话ID来对该请求进行身份验证。可以放慢登录速度,直到INSERT
完全完成后再登录,这样经过身份验证的会话ID才可用于其他请求,然后再返回。
因为insert语句是一个事务;一旦你的插入语句完成,它就在数据库中;我假设这两个到数据库的连接是使用两个不同的线程建立的;并且您同时发出这两个命令(此时,尚未插入 xyz。
考虑到您描述的用例,我不确定这是否应该经过两个不同的数据库连接。然而; 首先应该被证明是错误的;您可能想使用锁定文件或其他东西来指示“事务”真正完成。
归档时间: |
|
查看次数: |
2061 次 |
最近记录: |