mysql占位符,获取最近插入的id,关联删除

本文详细介绍了MySQL中使用占位符@id进行数据插入和获取最近插入ID的方法,强调了其线程安全性及优于SELECT MAX(id)的优势。此外,还探讨了多表关联删除的不同语法及其可行性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql占位符 :  

select @id := LAST_INSERT_ID();

select @id := userId from user;

insert into table1 values(@id,'content');
 

mysql 获取最近插入的id(自增列)

在MySQL中,使用auto_increment类型的id字段作为表的主键。通常的做法,是通过“select max(id) from tablename”的做法,但是显然这种做法需要考虑并发的情况,需要在事务中对主表以“X锁“,待获得max(id)的值以后,再解锁。  

 

这种做法需要的步骤比较多,有些麻烦,而且并发性也不好。有没有更简单的做法呢?答案之一是通过select LAST_INSERT_ID()这个操作。乍一看,它和select max(id)很象,但实际上它是线程安全的。也就是说它是基于数据库连接的,基于数据库连接是什么意义呢?举例说明:  

 

(1)、在连接1中向A表插入一条记录,A表包含一个auto_increment类型的id。

 

(2)、在连接2中向A表再插入一条记录。

 

(3)、结果:在连接1中执行select LAST_INSERT_ID()得到的结果和连接2中执行select LAST_INSERT_ID()的结果是不同的;而在两个连接中执行select max(id)的结果是相同的。

 

多表关联(联合)删除

1、delete from t1 where 条件

2、delete t1 from t1 where 条件

3、delete t1 from t1,t2 where 条件

4、delete t1,t2 from t1,t2 where 条件

前3者是可行的,第4者不可行。

也就是简单用delete语句无法进行多表删除数据操作,不过可以建立级联删除,在两个表之间建立级联

删除关系,则可以实现删除一个表的数据时,同时删除另一个表中相关的数据。

链接:https://yq.aliyun.com/ziliao/65045

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值