Mysql获取最ca88亚洲城增ID(auto_increment)的五种方式及其特点 – Allong

  相干档案库击中要害表作曲,一般情况下,特权市下定义一个人具有‘AUTO_INCREMENT’张开属性的‘ID’接守,确保记载表击中要害每个记载都有唯一的的识别。

  在现实器具中,获取最新的ID值是麝香的快速地流动经过。,对准这个问题,积极从事改编如次:

1、新的测得总算记载表获取最大ID

 mysql>CREATETABLE `get_max_id` (
   `id` int(11) unsigned NOTNULL AUTO_INCREMENT COMMENT ''事情大调'',
   `content` char(25) DEFAULTNULL COMMENT ''事情愿意的'',
PRIMARYKEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=1DEFAULT CHARSET=utf8;

2、未设定初值表获取最ca88亚洲城增ID

  准备记载表后,咱们意识,表击中要害愿意的临时雇员为空,此刻,查询max(id)以获取愿意的NULL

  办法1 – 最大(ID):

    这种办法的优点是复杂和粗糙。,直线部分去演哑剧,啊,不。,直奔主观;

    同时,它疏忽了倚靠客户端衔接的情感,你可以直走到第三点。;

mysql>selectmax(ID) from get_max_id;
 +---------+|max(ID) |+---------+|NULL|+---------+1 row inset (0.00 秒)

  办法2 – LAST_INSERT_ID()功能:

    LAST_INERT_ID(),言归正传上一次拔出或 UPDATE 查询中, 不自觉动作递加列设置的第一个人表的值。

    这东西的应用依然相反地直达的火车或汽车的。:

     1、在完全一样人衔接衔接抱反感中(同样的人客户端),SELECT的总算为基本事实一次INSERT的AUTO_INCREMENT属性列的ID。这句话的意义是相反的,就是说,倚靠衔接的客户机不能的情感其查询的总算。。拨款客户A和B,表TA第一流的筹集到ID 3,在中拔出记载后,自增ID为4。,在客户机A中经过此功能查询的总算是4。,又,客户机B中查询的总算值依然是3。;(检验)

     2、表无干,就是说,拨款TA和TB表,在向TA中拔出记载后,在TB中拔出记载,总算值为tb的最大(ID)值;(检验)

     3、应用非用魔术变出办法(”magic”)来INSERT或UPDATE条款记载时,虽然应用非0/是否为空值作为拔出接守,这么基本事实一个人拔出的言归正传值就不能的更改。;(检验)

     4、在完全一样人INSERT申请有特殊教育需要中,输出多个值,基本事实一个人_insert_id()的言归正传值是qu的第条款记载的id;(检验)

        5、在前进领域,表ID的唯一的性。

    设定初值查询总算,咱们腰槽的是0,这一点和最大(ID)依然有分别的;

mysql>select LAST_INSERT_ID();
 +------------------+| LAST_INSERT_ID() |+------------------+|0|+------------------+1 row inset (0.00 秒)

  办法3 – 检查表格制约显示 table status

    此办法想要礼物档案库(应用) db_name;)下表的基本交流;不自觉动作增量属性的值可以经过where术语达到。;

    上面想要的总算值,关闭依次的人自增ID值。

mysql> show table status where Name=''get_max_id'';
+------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+| Name       | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation       | Checksum | Create_options| Comment |+------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+| get_max_id | InnoDB |10| Compact    |0|0|16384|0|0|10485760|1|2015-04-2011:49:07|NULL|NULL| utf8_general_ci |NULL|||+------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+1 row inset (0.00 秒)

  办法4 – 

    想要关于档案库中表(包孕风景)的交流。项目描画表所属的架构,表典型,台式马达等;

    上面想要的总算值,关闭依次的人自增ID值。

mysql>select table_name, AUTO_INCREMENT from  where table_name="get_max_id";
+------------+----------------+| table_name | AUTO_INCREMENT |+------------+----------------+| get_max_id |1|+------------+----------------+1 row inset (0.01 秒)

  办法5 – 性质全程变量

    根底:以@@起初是的变量是全程变量,以@起初是的变量是用户下定义的变量。

    此处 @@IDENTITY表现最亲近的一次向具有identity属性(auto_increment)的表INSERT档案时对应的自增列的值。在这里的值是0

    1、类似地基本事实一个人拔出功能,拔出和选择麝香在完全一样人客户端中器械。,不受倚靠客户的情感;(检验)

    2、表无干;(检验)

    3、非用魔术变出拔出不情感总算值;(检验)

    4、在同样的人拔出中拔出多个记载,将第条款记载的ID值作为总算;(检验)

mysql>select@@IDENTITY;
+------------+|@@IDENTITY|+------------+|0|+------------+1 row inset (0.00 秒)

请选定转载的提供消息的人。: