飘飘悠悠 发表于 2015-1-16 22:16:11

MYSQL网页编程之MYSQL教程:主表中拔出纪录从表猎取ID

能够以较低的成本向客户提供IT所有权,当节约成本成为客户最高优先级时,解决方案提供商可以向更多的客户同时提供服务。虽然有许多来自RDBMS固有的局限性。</p>在MySQL中,利用auto_increment范例的id字段作为表的主键,并用它作为其他表的外键,构成“主从表布局”,这是数据库计划中罕见的用法。可是在详细天生id的时分,我们的操纵按次通常为:先在主表中拔出纪录,然后取得主动天生的id,以它为基本拔出从表的纪录。这内里有个坚苦,就是拔出主表纪录后,怎样取得它对应的id。一般的做法,是经由过程“selectmax(id)fromtablename”的做法,可是明显这类做法必要思索并发的情形,必要在事件中对主表加以“X锁“,待取得max(id)的值今后,再解锁。这类做法必要的步骤对照多,有些贫苦,并且并发性也欠好。有无更复杂的做法呢?谜底之一是经由过程selectLAST_INSERT_ID()这个操纵。乍一看,它和selectmax(id)很象,但实践上它是线程平安的。也就是说它是详细于数据库毗连的。上面经由过程实行申明:
1、在毗连1中向A表拔出一笔记录,A表包括一个auto_increment范例的字段。
2、在毗连2中向A表再拔出一笔记录。
3、了局:在毗连1中实行selectLAST_INSERT_ID()失掉的了局和毗连2中实行selectLAST_INSERT_ID()的了局是分歧的;而在两个毗连中实行selectmax(id)的了局是不异的。
实在在MSSQL中SCOPE_IDENTITY()和IDENT_CURRENT()的区分和这里是相似的。利用SCOPE_IDENTITY()能够取得拔出某个IDENTITY字段确当前会话的值,而利用IDENT_CURRENT()会取得在某个IDENTITY字段上拔出的最年夜值,而不辨别分歧的会话。
注:利用selectlast_insert_id()时要注重,当一次拔出多笔记录时,只是取得第一次拔出的id值,务必注重!能够尝尝
insertintotb(c1,c2)values(c1value,c2value),(c1value1,c2value2)..。
应用程序需要使用数据库,数据库本身需要设计、开发和部署。还有MySQL学习教程,客户怎样实施混合系统,或者需要帮助管理多个云服务?

兰色精灵 发表于 2015-1-19 06:28:11

记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。

小魔女 发表于 2015-1-28 05:15:25

如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。

爱飞 发表于 2015-2-5 16:55:42

对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。

海妖 发表于 2015-2-13 01:45:36

对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。

山那边是海 发表于 2015-3-3 12:41:08

SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.

仓酷云 发表于 2015-3-11 11:16:59

然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情

深爱那片海 发表于 2015-3-18 14:28:38

多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。

蒙在股里 发表于 2015-3-26 05:15:11

数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。
页: [1]
查看完整版本: MYSQL网页编程之MYSQL教程:主表中拔出纪录从表猎取ID