使用代理主键插入两个与MySQL相关的表中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用代理主键插入两个与MySQL相关的表中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1066字,纯文字阅读大概需要2分钟。
内容图文
![使用代理主键插入两个与MySQL相关的表中](/upload/InfoBanner/zyjiaocheng/882/15505d368a064a7da07fa6124cff9dac.jpg)
在我的数据库中,所有主键都是代理.有一些唯一键,但并非总是如此,因此访问特定行的最安全方法是主键.他们中的许多人都使用AUTO_INCREMENT.插入两个相关表时是否必须锁定对数据库的访问?例如.
create table foo
(
foo_id numeric not null auto_increment,
sth varchar,
PRIMARY KEY(foo_id)
)
create table bar
(
bar_id numeric not null auto_increment,
foo_id numeric not null,
PRIMARY KEY(bar_id),
FOREIGN KEY (foo_id) REFERENCES foo(foo_id)
)
首先,我将sth插入foo,然后需要foo_id值将相关内容插入bar.我可以从INFORMATION_SCHEMA.TABLES获得此值.但是,如果有人在我获得auto_increment值之前将新行添加到foo中怎么办?如果所有这些步骤都在存储过程中,是否有隐式启动的事务为一个过程调用锁定了所有必需的资源?或者,也许我必须显式使用START TRANSACTION.如果我不使用过程-仅插入和选择序列怎么办?
解决方法:
建议不要使用LAST_INSERT_ID,而不要查看INFORMATION_SCHEMA.TABLE.
从the MySQL documentation开始:生成的ID在每个连接的基础上保留在服务器中.这意味着函数返回给定客户端的值是针对该客户端影响AUTO_INCREMENT列的最新语句生成的第一个AUTO_INCREMENT值.
这意味着在不同连接上同时完成的插入操作不会更改当前连接上返回的值.
内容总结
以上是互联网集市为您收集整理的使用代理主键插入两个与MySQL相关的表中全部内容,希望文章能够帮你解决使用代理主键插入两个与MySQL相关的表中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。