MYSQL获取自增ID的四种方法

厚积!!

1. select max(id) from tablename

2.SELECT LAST_INSERT_ID() 函数

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

在多用户交替插入数据的情况下max(id)显然不能用。这时就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基 于

Connection的,只要每个线程都使用独立的 Connection对象,LAST_INSERT_ID函数将返回该Connection对AUTO_INCREMENT

列最新的insert or update 操作生成的第一个record的ID。这个值不能被其它客户端(Connection)影响,保证了你能够

找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁。使用单INSERT语句插入多条记录, LAST_INSERT_ID返回一

个列表。

3. select @@IDENTITY;

@@identity 是表示的是最近一次向具有identity属性(即自增列)的表插入数据时对应的自增列的值,是系统定义的全局变

量。一般系统定义的全局变量都是以@@开头,用户自定义变量以@开头。

比如有个表A,它的自增列是id,当向A表插入一行数据后,如果插入数据后自增列的值自动增加至101,则通过select

@@identity得到的值就是101。使用@@identity的前提是在进行insert操作后,执行select @@identity的时候连接没有关

闭,否则得到的将是NULL值。

4. SHOW TABLE STATUS;

得出的结果里边对应表名记录中有个Auto_increment字段,里边有下一个自增ID的数值就是当前该表的最大自增ID.

时间: 2024-08-04 18:20:00

MYSQL获取自增ID的四种方法的相关文章

mysql 获取自增id的值的方法

原生jdbc方式: Statement.getGeneratedKeys() 示例: Statement stmt = null; ResultSet rs = null; try { // // Create a Statement instance that we can use for // 'normal' result sets assuming you have a // Connection 'conn' to a MySQL database already // availab

JavaSE-反射-获取类或者对象的四种方法

1.使用Class类的静态方法Class.forName("xxxx"); 新建一个要想要获取的类 package org.burning.sport.javase.classloader; public class ClassLoaderModel { } package org.burning.sport.javase.classloader; /** * 类的载入方式 */ public class ClassLoaderMain { public static void mai

MYSQL的自增ID

当你插入A表一条数据,插入B表的数据时需要添加对应A表中对应字段的自增值,你会怎么获取到A表的自增值呢?那下面来介绍你可能不知道MySQL里的自增值. MYSQL获取自增ID的四种方法 1. select max(id) from tablename 2.SELECT LAST_INSERT_ID() 函数 LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID会改变. 在多用户交替插入数据的情况下max(id)显然不能用.这时就

mysql数据库自增id重新从1排序的两种方法

mysql默认自增ID是从1开始了,但当我们如果有插入表或使用delete删除id之后ID就会不会从1开始了哦. 使用mysql时,通常表中会有一个自增的id字段,但当我们想将表中的数据清空重新添加数据时,希望id重新从1开始计数,用以下两种方法均可: 通常的设置自增字段的方法:创建表格时添加: create table table1(id int auto_increment primary key,...) 创建表格后添加: alter table table1 add id int aut

mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法

[CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问题 [CSDN博客] mysql 主从复制 双主从复制原理 防止主键重复问题(必看) [CSDN博客] replace into导致mysql自增列导致主键重复问题分析 [CSDN博客] 一个循环更新某库所有表所有非主键列的值方法(sql 2005 & mysql) [CSDN博客] mysql i

MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(从百万到千万表记录测试)

测试缘由 一个开发同事做了一个框架,里面主键是uuid,我跟他建议说mysql不要用uuid用自增主键,自增主键效率高,他说不一定高,我说innodb的索引特性导致了自增id做主键是效率最好的,为了拿实际的案例来说服他,所以准备做一个详细的测试.   作为互联网公司,一定有用户表,而且用户表UC_USER基本会有百万记录,所以在这个表基础上准测试数据来进行测试.            测试过程是目前我想到的多方位的常用的几种类型的sql进行测试,当然可能不太完善,欢迎大家留言提出更加完善的测试方

mysql 数据库自增id 的总结

有一个表StuInfo,里面只有两列 StuID,StuName其中StuID是int型,主键,自增列.现在我要插入数据,让他自动的向上增长,insert into StuInfo(StuID,StuName) values(????) 如何写? INSERT INTO StuInfo(StuID,StuName) VALUES (NULL, `字符`)或者INSERT INTO StuInfo(StuName) VALUES (`字符`) INSERT和REPLACE语句的功能都是向表中插入新

mysql 查看mysql版本的四种方法

1 命令行中使用status可以查看. mysql> status;--------------mysql  Ver 14.14 Distrib 5.5.25a, for Linux (x86_64) using readline 5.1 Connection id:          33348Current database:Current user:           [email protected]SSL:                    Not in useCurrent p

获取项目根路径的四种方式

获取项目根路径的四种方式 CreateTime--2018年3月2日11:39:52 Author:Marydon <!-- 假设项目的请求根路径是"/demo" --> <!-- 方式一:EL表达式 --> ${pageContext.request.contextPath} <br>显示结果:"/demo" 应用: <i:form id="AddForm" method="post"