@@IDENTITY 返回最后一个插入 IDENTITY 的值,这些操作包括:INSERT, SELECT INTO,或者 bulk copy。如果在给没有 IDENTITY 列的其他表插入记录,系统将其置为 null。如果有多行记录插入到 IDENTITY 表中,@@IDENTITY 表示最后一个产生的值。如果触发了某个触发器,并且这个触发器执行向另一个带有 IDENTITY 列的表的插入操作,@@IDENTITY 将返回这个由触发器产生的值。如果这个触发器插入的表中不包含 IDENTITY 列,那么 @@IDENTITY 将为 null。如果插入操作失败,@@IDENTITY 值依然会增加,所以 IDENTITY 不保证数据的连续性。

从本身用法是没有什么区别的。
唯一区别的@@identity是sql server ,而last_insert_id()
是my sql,identity是跟last_insert_id的区别是如果出现insert多条记录的时候,一个是取这个事务的最前面的哪个,一个是取这个事务的最后一个.
last_insert_id()是取数据最后一下。而@@identity是顺序取数据的

看到了吧!last_insert_id()函数的返回值不是基于整个数据库的插入语句,
而是基于单个连接客户端之间所执行的insert语句最近一条,而且客户端之间是不会影响的,它是连接级别的函数,只对当前用户的连接有效。

=============================================================

以下文章来源于网络(文笔比我好,哈哈)

在MySQL中,使用auto_increment类型的id字段作为表的主键。
通常的做法,是通过“select max(id) from tablename”的做法,但是显然这种做法需要考虑并发的情况,需要在事务中对主表加以“X锁“,待获得max(id)的值以后,再解锁。
这种做法需要的步骤比较多,有些麻烦,而且并发性也不好。有没有更简单的做法呢?答案之一是通过select LAST_INSERT_ID()这个操作。
乍一看,它和select max(id)很象,但实际上它是线程安全的。也就是说它是具体于数据库连接的。下面通过实验说明:
(1)、在连接1中向A表插入一条记录,A表包含一个auto_increment类型的字段。
(2)、在连接2中向A表再插入一条记录。
(3)、结果:在连接1中执行select 得到的结果和连接2中执行select LAST_INSERT_ID()的结果是不同的;而在两个连接中执行select max(id)的结果是相同的。LAST_INSERT_ID()
其实在MSSQL中SCOPE_IDENTITY()和IDENT_CURRENT()的区别和这里是类似的。使用SCOPE_IDENTITY()可以获得插入某个IDENTITY字段的当前会话的值,而使用IDENT_CURRENT()会获得在某个IDENTITY字段上插入的最大值,而不区分不同 的会话。
注:使用select last_insert_id()时要注意,当一次插入多条记录时,只是获得第一次插入的id值,务必注意!

LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID会改变。

一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的。

但在多线程情况下,就不行了。在多用户交替插入数据的情况下max(id)显然不能用。

这就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的Connection对象,LAST_INSERT_ID函数将返回该Connection对AUTO_INCREMENT列最新的insert or update操作生成的第一个record的ID。这个值不能被其它客户端(Connection)影响,保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁。

最新文章

  1. 进程管理三大扩展工具htop
  2. 关于Android多项目依赖在Eclipse中无法关联源代码的问题解决
  3. [No00005B] word快速插入当前时间&怎样一次性删除文档中的全部链接
  4. bzoj1080
  5. 使用ssh连接远程主机
  6. Mysql相关集锦
  7. 如何实现从Android第三方平台推送微信公众号
  8. linux下用Apache一个IP多个网站多域名配置方法
  9. Building Apps with Over 65K Methods(解决APP引用方法总数超过65536)
  10. 九度OnlineJudge之1032:ZOJ
  11. ubuntu卸载vmware
  12. mysql基础:mysql列类型--时间和日期
  13. java阅读器hdfs单纯demo
  14. NPOI 表头、页眉页脚重复设置
  15. EasyUI 冻结列
  16. VUE新版扫码下单必选分类设置FAQ
  17. js for 循环示例
  18. Codeforces 920G - List Of Integers
  19. css中 font常用的样式属性
  20. SharePoint 改动passwordWeb Part部署方案

热门文章

  1. WPF如何更改系统控件的默认高亮颜色 (Highlight brush)
  2. 【转】Ruby on Rails中select使用方法
  3. ng2 中的全屏与退出全屏
  4. shell入门-awk-1
  5. shell入门-sed-2替换功能
  6. MySQL绿色版的安装步骤
  7. Reporting Services无法连接ORACLE,提示:System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本
  8. css中的定位属性position(转)
  9. 初始String
  10. 项目一:第七天 CRM 和bos系统实现定区关联客户,关联快递员. 通过CXF框架实现