@@identity和LAST_INSERT_ID()有什么区别么

时间:2022-09-21 22:52:06
RT:今天找了一些资料,说的都不太一样,有的人说@@inentity是系统全局的而LAST_INSERT_ID()是针对每个Connection的,有的说这两个是一个东西的,还有的说是当INSERT多条记录的时候这两个函数返回的结果是不一样的,求大神指点下,或者共享个相关的文章资料也可以哈

7 个解决方案

#1


@@inentity是sqlserver的吧

#2


mysql里头也有.
楼主不妨直接查询mysql的官方文档.
mysql5.5的chm帮助是这么说的:

identity 
This variable is a synonym for the  last_insert_id variable. It exists for compatibility with other database systems. You can read its value with  SELECT @@identity, and set it using SET identity. 

再看看:
last_insert_id 

The value to be returned from LAST_INSERT_ID(). This is stored in the binary log when you use LAST_INSERT_ID() in a statement that updates a table. Setting this variable does not update the value returned by the mysql_insert_id() C API function. 

这两者是完全一样的.


#3


一样,没什么差别。

#4


引用 2 楼 iihero 的回复:
mysql里头也有.
楼主不妨直接查询mysql的官方文档.
mysql5.5的chm帮助是这么说的:

identity 
This variable is a synonym for the  last_insert_id variable. It exists for compatibility with other database systems. You can read its value with  SELECT @@identity, and set it using SET identity. 

再看看:
last_insert_id 

The value to be returned from LAST_INSERT_ID(). This is stored in the binary log when you use LAST_INSERT_ID() in a statement that updates a table. Setting this variable does not update the value returned by the mysql_insert_id() C API function. 

这两者是完全一样的.

哦,谢谢,今天下午我看到有人说identity是跟last_insert_id的区别是如果出现insert多条记录的时候,一个是取这个事务的最前面的哪个,一个是取这个事务的最后一个,存在这种情况么?

#5


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

#6


引用 4 楼 hunterdahe 的回复:
Quote: 引用 2 楼 iihero 的回复:

mysql里头也有.
楼主不妨直接查询mysql的官方文档.
mysql5.5的chm帮助是这么说的:

identity 
This variable is a synonym for the  last_insert_id variable. It exists for compatibility with other database systems. You can read its value with  SELECT @@identity, and set it using SET identity. 

再看看:
last_insert_id 

The value to be returned from LAST_INSERT_ID(). This is stored in the binary log when you use LAST_INSERT_ID() in a statement that updates a table. Setting this variable does not update the value returned by the mysql_insert_id() C API function. 

这两者是完全一样的.

哦,谢谢,今天下午我看到有人说identity是跟last_insert_id的区别是如果出现insert多条记录的时候,一个是取这个事务的最前面的哪个,一个是取这个事务的最后一个,存在这种情况么?


汗,你说的如果是SQL Server, 还有点像,但你发的帖是在MySQL版. 所以,不存在这种情况.
再说一遍, identity 是 last_insert_id的同义词.

#7


引用 6 楼 iihero 的回复:
Quote: 引用 4 楼 hunterdahe 的回复:

Quote: 引用 2 楼 iihero 的回复:

mysql里头也有.
楼主不妨直接查询mysql的官方文档.
mysql5.5的chm帮助是这么说的:

identity 
This variable is a synonym for the  last_insert_id variable. It exists for compatibility with other database systems. You can read its value with  SELECT @@identity, and set it using SET identity. 

再看看:
last_insert_id 

The value to be returned from LAST_INSERT_ID(). This is stored in the binary log when you use LAST_INSERT_ID() in a statement that updates a table. Setting this variable does not update the value returned by the mysql_insert_id() C API function. 

这两者是完全一样的.

哦,谢谢,今天下午我看到有人说identity是跟last_insert_id的区别是如果出现insert多条记录的时候,一个是取这个事务的最前面的哪个,一个是取这个事务的最后一个,存在这种情况么?


汗,你说的如果是SQL Server, 还有点像,但你发的帖是在MySQL版. 所以,不存在这种情况.
再说一遍, identity 是 last_insert_id的同义词.

嗯,就是问mysql的,呵呵,因为网上有很多都说mysql也是这么区分的,所以我有点没谱了,说法太多了,但是昨天我用自己的库测了下发现这俩基本是一个东西,identity 也不像是个全局的,因为新建个客户端查询的identity 就是0了,所以不放心就问了下,谢谢啦

#1


@@inentity是sqlserver的吧

#2


mysql里头也有.
楼主不妨直接查询mysql的官方文档.
mysql5.5的chm帮助是这么说的:

identity 
This variable is a synonym for the  last_insert_id variable. It exists for compatibility with other database systems. You can read its value with  SELECT @@identity, and set it using SET identity. 

再看看:
last_insert_id 

The value to be returned from LAST_INSERT_ID(). This is stored in the binary log when you use LAST_INSERT_ID() in a statement that updates a table. Setting this variable does not update the value returned by the mysql_insert_id() C API function. 

这两者是完全一样的.


#3


一样,没什么差别。

#4


引用 2 楼 iihero 的回复:
mysql里头也有.
楼主不妨直接查询mysql的官方文档.
mysql5.5的chm帮助是这么说的:

identity 
This variable is a synonym for the  last_insert_id variable. It exists for compatibility with other database systems. You can read its value with  SELECT @@identity, and set it using SET identity. 

再看看:
last_insert_id 

The value to be returned from LAST_INSERT_ID(). This is stored in the binary log when you use LAST_INSERT_ID() in a statement that updates a table. Setting this variable does not update the value returned by the mysql_insert_id() C API function. 

这两者是完全一样的.

哦,谢谢,今天下午我看到有人说identity是跟last_insert_id的区别是如果出现insert多条记录的时候,一个是取这个事务的最前面的哪个,一个是取这个事务的最后一个,存在这种情况么?

#5


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

#6


引用 4 楼 hunterdahe 的回复:
Quote: 引用 2 楼 iihero 的回复:

mysql里头也有.
楼主不妨直接查询mysql的官方文档.
mysql5.5的chm帮助是这么说的:

identity 
This variable is a synonym for the  last_insert_id variable. It exists for compatibility with other database systems. You can read its value with  SELECT @@identity, and set it using SET identity. 

再看看:
last_insert_id 

The value to be returned from LAST_INSERT_ID(). This is stored in the binary log when you use LAST_INSERT_ID() in a statement that updates a table. Setting this variable does not update the value returned by the mysql_insert_id() C API function. 

这两者是完全一样的.

哦,谢谢,今天下午我看到有人说identity是跟last_insert_id的区别是如果出现insert多条记录的时候,一个是取这个事务的最前面的哪个,一个是取这个事务的最后一个,存在这种情况么?


汗,你说的如果是SQL Server, 还有点像,但你发的帖是在MySQL版. 所以,不存在这种情况.
再说一遍, identity 是 last_insert_id的同义词.

#7


引用 6 楼 iihero 的回复:
Quote: 引用 4 楼 hunterdahe 的回复:

Quote: 引用 2 楼 iihero 的回复:

mysql里头也有.
楼主不妨直接查询mysql的官方文档.
mysql5.5的chm帮助是这么说的:

identity 
This variable is a synonym for the  last_insert_id variable. It exists for compatibility with other database systems. You can read its value with  SELECT @@identity, and set it using SET identity. 

再看看:
last_insert_id 

The value to be returned from LAST_INSERT_ID(). This is stored in the binary log when you use LAST_INSERT_ID() in a statement that updates a table. Setting this variable does not update the value returned by the mysql_insert_id() C API function. 

这两者是完全一样的.

哦,谢谢,今天下午我看到有人说identity是跟last_insert_id的区别是如果出现insert多条记录的时候,一个是取这个事务的最前面的哪个,一个是取这个事务的最后一个,存在这种情况么?


汗,你说的如果是SQL Server, 还有点像,但你发的帖是在MySQL版. 所以,不存在这种情况.
再说一遍, identity 是 last_insert_id的同义词.

嗯,就是问mysql的,呵呵,因为网上有很多都说mysql也是这么区分的,所以我有点没谱了,说法太多了,但是昨天我用自己的库测了下发现这俩基本是一个东西,identity 也不像是个全局的,因为新建个客户端查询的identity 就是0了,所以不放心就问了下,谢谢啦