Mysql中LAST_INSERT_ID()的函数使用详解

发布时间:2019-06-01  栏目:NoSQL  评论:0 Comments

Mysql中LAST_INSERT_ID()的函数使用详解,mysqllastinsertid

多年来和Sobin在做二个精品课程的档案的次序,因为用到三个稳住的id作为表间关联,所以在前1个表插入数据后要把插入数据变动的自增id传递给下一个表。研讨了一番操纵选用Mysql提供了三个LAST_INSERT_ID()的函数。

复制代码 代码如下:
LAST_INSERT_ID() (with no argument) returns the first automatically
generated value that was set for an AUTO_INCREMENT column by the most
recently executed INSERT or UPDATE statement to affect such a column.
For example, after inserting a row that generates an AUTO_INCREMENT
value, you can get the value like this:
mysql> SELECT LAST_INSERT_ID();
-> 195

简短说来,正是这些函数将回来插入的那条记下在表中自增的非常字段的值,一般大家都给那么些自增字段命名叫ID。这样就可以再次回到刚插入的笔录的ID值了。

2个大致的事例:

复制代码 代码如下:
$query=”INSERT INTO `testtable` (`clou1`,`clou2`) VALUES
(‘testvalue’,’test’)”;
mysql_query($query);
$query=”SELECT LAST_INSERT_ID()”;
$result=mysql_query($query);
$rows=mysql_fetch_row($result);
echo $rows[0];

其一函数是依照connection的,也正是不会被别的客户端的connection影响到,所以结果是正确的。若是选拔select
max(id) from table,在高密度的插入请求下,是有比不小希望出难题的,再次来到错误值

LAST_INSERT_ID说明

从名字能够见见,LAST_INSERT_ID即为最后插入的ID值,依据MySQL的法定手册表明,它有2种选拔格局

①是不带参数:LAST_INSERT_ID(),这种情势和AUTO_INCREMENT属性一齐使用,当往带有‘AUTO_INCREMENT’属性字段的表中新扩展记录时,LAST_INSERT_ID()即再次来到该字段的值,大家可试下(小编早已表达过);
2是包涵表明式:如上边介绍的LAST_INSERT_ID(value+1),它回到的是表达式的值,即‘value+壹’;
##################################
LAST_INSERT_ID() 自动回到末了一个INSERT或 UPDATE 查询中
AUTO_INCREMENT列设置的率先个表产生的值。

MySQL的LAST_INSERT_ID的注意事项:

第二、查询和插入所使用的Connection对象必须是同二个本领够,不然重回值是不行预料的。

mysql> SELECT LAST_INSERT_ID();

        -> 100

采用那函数向四个给定Connection对象回来的值是该Connection对象产生对影响AUTO_INCREMENT列的摩登讲话第3个AUTO_INCREMENT值的。那几个值不能够被其余Connection对象的震慑,即它们发出它们自个儿的AUTO_INCREMENT值。

第二、LAST_INSERT_ID
是与table毫无干系的,假如向表a插入数据后,再向表b插入数据,LAST_INSERT_ID返回表b中的Id值。

其叁、 要是你利用一条INSERT语句插入八个行,  LAST_INSERT_ID()
只回去插入的第叁行数据时发出的值。其缘由是这使依据任何服务器复制同样的
INSERT语句变得简单。

mysql> INSERT INTO t VALUES

    -> (NULL, ‘Mary’), (NULL, ‘Jane’), (NULL, ‘Lisa’);

mysql> SELECT * FROM t;

| id | name |

+—-+——+

|  1 | Bob  |

|  2 | Mary |

|  3 | Jane |

|  4 | Lisa |

mysql> SELECT LAST_INSERT_ID();  //那正是自身要注解的关键难点。

| LAST_INSERT_ID() |

|                2 |

即使将三 个新行插入 t, 对这么些行的第二行产生的 ID 为 二, 那也是
LAST_INSERT_ID()再次回到的值。

上述所述就是本文的全体内容了,希望大家能够喜欢。

请您花一点年华将稿子分享给你的相恋的人也许留下商讨。我们将会由衷谢谢您的支撑!

http://www.bkjia.com/Mysql/974648.htmlwww.bkjia.comtruehttp://www.bkjia.com/Mysql/974648.htmlTechArticleMysql中LAST\_INSERT\_ID()的函数使用详解,mysqllastinsertid
目前和Sobin在做三个精品课程的类型,因为用到1个一定的id作为表间关联,所以在前一个…

近年来和Sobin在做叁个精品课程的类别,因为用到二个固定的id作为表间关联,所以在前三个表插入数据后要把插入数据变动的自增id传递给下3个表。商量了壹番决定使用Mysql提供了2个LAST_INSERT_ID()的函数。

复制代码 代码如下:

LAST_INSERT_ID() (with no argument) returns the first automatically
generated value that was set for an AUTO_INCREMENT column by the most
recently executed INSERT or UPDATE statement to affect such a column.
For example, after inserting a row that generates an AUTO_INCREMENT
value, you can get the value like this:
mysql> SELECT LAST_INSERT_ID();
-> 195

简单来说说来,正是其一函数将回到插入的那条记下在表中自增的老大字段的值,一般大家都给那么些自增字段命名称为ID。那样就能够回去刚插入的笔录的ID值了。

一个粗略的例证:

复制代码 代码如下:

$query=”INSERT INTO `testtable` (`clou1`,`clou2`) VALUES
(‘testvalue’,’test’)”;
mysql_query($query);
$query=”SELECT LAST_INSERT_ID()”;
$result=mysql_query($query);
$rows=mysql_fetch_row($result);
echo $rows[0];

本条函数是依据connection的,也正是不会被别的客户端的connection影响到,所以结果是正确的。假若选拔select
max(id) from table,在高密度的插入请求下,是有十分大希望出难题的,重回错误值

LAST_INSERT_ID说明

从名字能够看看,LAST_INSERT_ID即为最终插入的ID值,依据MySQL的合法手册表达,它有二种选取方法

1是不带参数:LAST_INSERT_ID(),这种措施和AUTO_INCREMENT属性一齐利用,当往带有‘AUTO_INCREMENT’属性字段的表中新添记录时,LAST_INSERT_ID()即重返该字段的值,我们可试下(小编曾经注明过);
二是含有表明式:如上边介绍的LAST_INSERT_ID(value+一),它回到的是表明式的值,即‘value+1’;
##################################
LAST_INSERT_ID() 自动回到最后三个INSERT或 UPDATE 查询中
AUTO_INCREMENT列设置的第1个表发生的值。

MySQL的LAST_INSERT_ID的注意事项:

率先、查询和插入所运用的Connection对象必须是同1个才足以,不然重返值是不足预期的。

mysql> SELECT LAST_INSERT_ID();

        -> 100

行使那函数向三个给定Connection对象回来的值是该Connection对象发生对影响AUTO_INCREMENT列的新颖讲话第3个AUTO_INCREMENT值的。那些值无法被其余Connection对象的熏陶,即它们发出它们自个儿的AUTO_INCREMENT值。

第二、LAST_INSERT_ID
是与table非亲非故的,借使向表a插入数据后,再向表b插入数据,LAST_INSERT_ID返回表b中的Id值。

其3、 假令你选拔一条INSERT语句插入七个行,  LAST_INSERT_ID()
只回去插入的首先行数据时产生的值。其缘由是那使依靠任何服务器复制同样的
INSERT语句变得轻巧。

mysql> INSERT INTO t VALUES

    -> (NULL, ‘Mary’), (NULL, ‘Jane’), (NULL, ‘Lisa’);

mysql> SELECT * FROM t;

| id | name |

+—-+——+

|  1 | Bob  |

|  2 | Mary |

|  3 | Jane |

|  4 | Lisa |

mysql> SELECT LAST_INSERT_ID();  //那正是自己要验证的关键难点。

| LAST_INSERT_ID() |

|                2 |

虽说将3 个新行插入 t, 对那么些行的首先行产生的 ID 为 二, 那也是
LAST_INSERT_ID()重回的值。

上述所述便是本文的全部内容了,希望我们能够喜欢。

请您花一点岁月将稿子分享给你的意中人只怕留下商量。大家将会由衷多谢您的支撑!

您大概感兴趣的作品:

留下评论

网站地图xml地图