首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

INSERT INTO语句后记录的捕获ID(INT AUTO INCREMENT)

在SQL中,INSERT INTO语句用于向数据库表中插入新的记录。当表中有一个INT AUTO_INCREMENT类型的字段时,可以使用LAST_INSERT_ID()函数来捕获插入记录的ID。

以下是一个简单的示例:

代码语言:sql
复制
INSERT INTO table_name (column1, column2, column3)
VALUES ('value1', 'value2', 'value3');

SELECT LAST_INSERT_ID();

在这个示例中,INSERT INTO语句将新记录插入到table_name表中,并且column1column2column3字段分别被赋值为value1value2value3LAST_INSERT_ID()函数将返回插入记录的ID,该ID是由INT AUTO_INCREMENT类型的字段自动生成的。

需要注意的是,LAST_INSERT_ID()函数只能在当前会话中使用,因此如果在其他会话中插入新记录,则LAST_INSERT_ID()函数将返回该会话中最后插入记录的ID。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL自增锁探究

Tips:自增锁跟事务无关,即使多个insert语句存在同一个事务中,每次insert都会申请最新自增锁来获取最新AUTO_INCREMENT值;获取到自增值释放,而不是事务结束释放;2)自增锁表锁需要注意是...mutex(乐观锁),来一个insert立即处理,在生成insert语句完毕检查id是否被其他线程/进程使用,如果已经被使用则重新获取id;这样一来,多条 INSERT 语句可以并发执行,因此交叉模式并发量最高...为12 步骤⑤:Thread-01线程校验id值是否被其他线程获取过,校验结果:未被其他线程获取过,将之前获取到auto_increment值分配给此次insert语句,执行插入。...`id` int(11) NOT NULL AUTO_INCREMENT, `age` int(11) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE...) ENGINE = InnoDB AUTO_INCREMENT=1;-- 在创建表也可以通过SQL语句修改auto_incrementalter table t3 auto_increment=20

9321

MySQL自增主键详解「建议收藏」

; 在MySQL8.0版本,将自增值变更记录在了redo log中,重启时候依靠redo log恢复重启之前值 二、自增值修改机制 如果字段id被定义为AUTO_INCREMENT,在插入一行数据时候...,自增值行为如下: 1.如果插入数据时id字段指定为0、null或未指定值,那么就把这个表当前AUTO_INCREMENT值填到自增字段 2.如果插入数据时id字段指定了具体值,就直接使用语句里指定值...,建表语句如下: CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c` int(11) DEFAULT NULL, `d`...UNSIGNED auto_increment PRIMARY KEY ) auto_increment = 4294967295; INSERT INTO t VALUES(NULL); INSERT...INTO t VALUES(NULL); 第一个insert语句插入数据成功,这个表AUTO_INCREMENT没有改变(还是4294967295),就导致了第二个insert语句又拿到相同自增

5.8K40

MySQL避免插入重复记录方法

` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uidx_c1` (`c1`) ) ENGINE=InnoDB AUTO_INCREMENT...=3,c1=3记录不见了,新增了一条id=4,c1=3记录. replace into语句执行完会返回一个数,来指示受影响数目。...使用insert into,你必须具有insert和update权限 如果有新记录被插入,则受影响行值显示1;如果原有的记录被更新,则受影响行值显示2;如果记录被更新前后值是一样,则受影响行数值显示...` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uidx_c1` (`c1`) ) ENGINE=InnoDB AUTO_INCREMENT...id改变;insert ... on duplicate key update在遇到重复行时,会直接更新原有的行,具体更新哪些字段怎么更新,取决于update语句

2.2K51

关于自增id 你可能还不知道

但如果马上重启实例,重启这个表 AUTO_INCREMENT 就会变成 10。 也就是说,MySQL 重启可能会修改一个表 AUTO_INCREMENT 值。...造成自增id不连续情况可能有: 1.唯一键冲突 2.事务回滚 3.insert ... select语句批量申请自增id 3.自增id有上限吗?...下面我们测试下当自增id达到最大时再次插入数据会怎么样: create table t(id int unsigned auto_increment primary key) auto_increment...id` int(10) unsigned NOT NULL AUTO_INCREMENT,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=4294967295...,第一个 insert 语句插入数据成功,这个表AUTO_INCREMENT 没有改变(还是 4294967295),就导致了第二个 insert 语句又拿到相同自增 id 值,再试图执行插入语句

1.3K30

MySQL 序列使用

mysql> CREATE TABLE insect -> ( -> id INT UNSIGNED NOT NULL AUTO_INCREMENT, -> PRIMARY KEY...$seq = $dbh->{mysql_insertid}; PHP实例 PHP 通过 mysql_insert_id ()函数来获取执行插入SQL语句AUTO_INCREMENT值。...); $seq = mysql_insert_id ($conn_id); ---- 重置序列 如果你删除了数据表中多条记录,并希望对剩下数据AUTO_INCREMENT列进行重新排列,那么你可以通过删除自增列...AUTO_INCREMENT FIRST, -> ADD PRIMARY KEY (id); ---- 设置序列开始值 一般情况下序列开始值为1,但如果你需要指定一个开始值100,那我们可以通过以下语句来实现...NULL )engine=innodb auto_increment=100 charset=utf8; 或者你也可以在表创建成功,通过以下语句来实现: mysql> ALTER TABLE t AUTO_INCREMENT

91800

开心档之MySQL 序列使用

mysql> CREATE TABLE insect -> ( -> id INT UNSIGNED NOT NULL AUTO_INCREMENT, -> PRIMARY KEY...$seq = $dbh->{mysql_insertid}; PHP实例 PHP 通过 mysql_insert_id ()函数来获取执行插入SQL语句AUTO_INCREMENT值。...); $seq = mysql_insert_id ($conn_id); 重置序列 如果你删除了数据表中多条记录,并希望对剩下数据AUTO_INCREMENT列进行重新排列,那么你可以通过删除自增列...AUTO_INCREMENT FIRST, -> ADD PRIMARY KEY (id); 设置序列开始值 一般情况下序列开始值为1,但如果你需要指定一个开始值100,那我们可以通过以下语句来实现...NULL )engine=innodb auto_increment=100 charset=utf8; 或者你也可以在表创建成功,通过以下语句来实现: mysql> ALTER TABLE t AUTO_INCREMENT

49920

开心档之MySQL 序列使用

mysql> CREATE TABLE insect -> ( -> id INT UNSIGNED NOT NULL AUTO_INCREMENT, -> PRIMARY KEY...$seq = $dbh->{mysql_insertid}; PHP实例 PHP 通过 mysql_insert_id ()函数来获取执行插入SQL语句AUTO_INCREMENT值。...); $seq = mysql_insert_id ($conn_id); ---- 重置序列 如果你删除了数据表中多条记录,并希望对剩下数据AUTO_INCREMENT列进行重新排列,那么你可以通过删除自增列...AUTO_INCREMENT FIRST, -> ADD PRIMARY KEY (id); ---- 设置序列开始值 一般情况下序列开始值为1,但如果你需要指定一个开始值100,那我们可以通过以下语句来实现...NULL )engine=innodb auto_increment=100 charset=utf8; 或者你也可以在表创建成功,通过以下语句来实现: mysql> ALTER TABLE t AUTO_INCREMENT

37100

39 | 自增主键不连续

建表: CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c` int(11) DEFAULT NULL, `d` int(...举例来说,如果一个表当前数据行里最大 id 是 10,AUTO_INCREMENT=11。这时候,我们删除 id=10 行,AUTO_INCREMENT 还是 11。...但如果马上重启实例,重启这个表 AUTO_INCREMENT 就会变成 10。也就是说,MySQL 重启可能会修改一个表 AUTO_INCREMENT 值。...这个参数值被设置为 0 时,表示采用之前 MySQL 5.0 版本策略,即语句执行结束才释放锁; 这个参数值被设置为 1 时: 普通 insert 语句,自增锁在申请之后就马上释放; 类似 insert...… select 这样批量插入数据语句,自增锁还是要等语句结束才被释放; 这个参数值被设置为 2 时,所有的申请自增主键动作都是申请就释放锁。

4.8K10

保存mysql InnoDBauto_increment值另类方案

-- 再插入一条数据,该表AUTO_INCREMENT变为4 insert into test(field1) values('test2'); show create table test\G;...重启再插入数据,mysql会以表中最大id+1作为当前AUTO_INCREMENT值,新插入数据ID就变为这个了。...针对有自增ID表,为每个表在$AUTOINCR_INDEXES_TABLE_NAME表中创建对应记录以保存该表auto_increment值 for T in ${TABLES[@]} ; do...值sql语句,并执行语句 SET @STMT := CONCAT(\"ALTER TABLE $MYSQL_DBNAME.\", tableName, \" AUTO_INCREMENT...值保存下来 利用插入触发器,在每次插入数据更新保存auto_increment值 利用init-file参数,在mysql服务启动时调用一个存储过程,该存储过程负责以保存auto_increment

97350

面试官:MySQL 唯一索引为什么会导致死锁?

` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(200) CHARACTER SET utf8 DEFAULT NULL, `...此时会发现吕布班级跟年龄都改变了,但是id也变成最新了,所以不是更新,是删除再新增 insert on duplicate key update 如果在insert into 语句末尾指定了on duplicate...使用insert into,你必须具有insert和update权限 如果有新记录被插入,则受影响行值显示1;如果原有的记录被更新,则受影响行值显示2;如果记录被更新前后值是一样,则受影响行数值显示...mysql执行完duplicateupdate操作, 然后对该记录加上X(排他锁),最后进行update写入。...id改变;insert … on duplicate key update在遇到重复行时,会直接更新原有的行,具体更新哪些字段怎么更新,取决于update语句

1.4K20

MySQL插入重复后进行覆盖更新

MySQL插入重复后进行覆盖更新 一、介绍 在MySQL中,常常会有唯一键约束,当使用Java插入重复,会报异常我们需要进行捕获处理。...二、使用 首先,我们先建立一张有唯一键表,并初始化插入一条数据 CREATE TABLE `tb_user_info` ( `id` int(11) NOT NULL AUTO_INCREMENT...KEY `unique_idCard` (`id_card`) USING BTREE COMMENT '唯一身份证号码' ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT...', 1); 会发现出现报错,id_card=50001已经存在,不允许重复插入 那么我们只要在后面加上ON DUPLICATE KEY UPDATE语句,就可以完成重复之后处理,如下 INSERT...= now(),将更新时间设置为当前时间 ---- 这边额外再提示一个点,如果主键是使用自增序列,使用触发ON DUPLICATE KEY UPDATE语句,序列会自动往后移动。

42320
领券