如何知道mysql INSERT何时完成(多个连接)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何知道mysql INSERT何时完成(多个连接),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1056字,纯文字阅读大概需要2分钟。
内容图文
我有这样的多数据库连接情况:
db connection 1: INSERT xyz
(very short time passes)
db connection 2: SELECT [looking for xyz]
有时SELECT会找到xyz,有时却找不到(因为它与INSERT位于不同的数据库连接上).如果我在INSERT之后放入sleep(1)那么SELECT总是找到xyz.
对于db connection 1,如何让它等到INSERT完成并且新行可用于在另一个db连接上运行的SELECT?
我的桌子是innodb.用例是在连接1上插入经过身份验证的会话ID,然后重定向到经过身份验证的页面,然后当对经过身份验证的页面的请求进入时(在另一个连接上),我们会查找会话ID以对请求进行身份验证.如果我们减慢登录速度并让它等到INSERT完全结束,这样就可以了,在返回之前,经过身份验证的会话ID可用于其他请求.
解决方法:
第一个问题,为什么同一个用户有两个不同的连接?
如果你真的想要保持两个会话,你可以玩table locking.
连接1,发送这些sql语句:
LOCK TABLE mytable WRITE; -- mytable is know locked, nobody else can access it
INSERT xyz; -- insert data in database
UNLOCK TABLES; -- unlock the table, the rows ARE inserted
连接2:
SELECT [looking for xyz]
如果连接2在连接1解锁表之前尝试访问数据库,则连接必须等待.当表被解锁时,将插入行,因此select将返回想要的结果.
内容总结
以上是互联网集市为您收集整理的如何知道mysql INSERT何时完成(多个连接)全部内容,希望文章能够帮你解决如何知道mysql INSERT何时完成(多个连接)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。