MySQL获取刚插入的数据

1. 通过自增的键auto_increment取得。

select max(id) from tablename

这种做法需要考虑并发的情况,需要在事务中对主表加以“X锁“,待获得max(id)的值以后,再解锁。

2. 使用select LAST_INSERT_ID() 方法,是线程安全的操作。使用select
last_insert_id()时要注意,当一次插入多条记录时,只是获得第一次插入的id值。【自动返回最后一个INSERT或 UPDATE 查询中 AUTO_INCREMENT列设置的第一个表发生的值】

时间: 2024-10-11 21:22:37

MySQL获取刚插入的数据的相关文章

mysql 获取刚插入行id汇总

mysql 获取刚插入行id汇总 我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的.但在多线程情况下,就不行了. 下面介绍三种方法 (1) getGeneratedKeys()方法: 程序片断: Connection conn = ;        Serializable ret = null;        PreparedStatement state = .;       

MyBatis中如何获取刚插入数据的 id

一.MyBatis中如何获取刚插入数据的 id 情景: 三张表 1.生成订单 (easybuy_order) 2.生成订单明细 (easybuy_order_detail) 3.更新商品库存 (easybuy_product) 在通过调用相应的 DAO 接口方法来实现对三张表的更新操作,并且这三步操作也是前后关联的,后一步的操作依托于上一步操作的结果,如第一步生成订单 (即在订单主表(easybuy_order)新增一条数据)之后需要获取到新增订单数据的 id 作为下一步生成订单明细的 orde

oracle 如何用触发器实现更新刚插入的数据集合

oracle 如何用触发器实现更新刚插入的数据集合 1.建立测试表 create table TEST_TB ( ID   NUMBER, WLID NUMBER, PM   VARCHAR2(100), DJZT VARCHAR2(10), SL   NUMBER, PH   VARCHAR2(100) ); 2.建立带ref cursor定义的包和包体及函数: CREATE OR REPLACE package pkg_test as /* 定义ref cursor类型 不加return类型

oracle 如何用触发器实现更新刚插入的数据

oracle 如何用触发器实现更新刚插入的数据create or replace trigger tr_namebefore inserton 表for each rowbegin:new.某字段='新值';end; 修改A表的某条数据的某个字段AA(这个字段是规定好的),在保存后A表的该条数据的另一个字段BB会根据一个函数把AA字段的值处理后更新create or replace trigger BF_ZJ_UPDATEZJM   after update of aa on a for eac

YII获取刚插入数据的id主键

单条数据时model->attributes['id']; 循环插入时使用 Yii::app()->db->getLastInsertID() 获取 循环插入时需要每次插入后重置 model->primarykey =0; 或 model->id = 0;model->setIsNewRecord(true);

关于mysql获取第N个数据

怎么获取表中第N个数据呢? limit语句能否返回前几条数据和中间某几行数据, mysql> SELECT * FROM table LIMIT 5,10;  // 检索记录行 6-15 //为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1: mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last. //如果只给定一个参数,它表示返回最大的记录行数目:  mysql> SELECT * FROM tab

mysql获取7天前数据,日期比较

select * from news where n_date>unix_timestamp( subdate( now() , interval 7day ))order by n_click  desc N天内记录 WHERE TO_DAYS(NOW()) - TO_DAYS(时间字段) <= N 今天的记录 where date(时间字段)=date(now()) 或 where to_days(时间字段) = to_days(now()); 查询一周: select * from ta

SQL获取刚插入的记录的自动增长列ID的值

假设表结构如下: CREATE TABLE TestTable ( id int identity, CreatedDate datetime ) SQL2005获得新增行的自动增长列的语句如下: insert into TestTable (CreatedDate)  output  inserted.id  values (getdate()) SQL2000获得新增行的自动增长列的语句如下: insert into TestTable (CreatedDate)  values (getd

获取刚插入的主键

StringBuffer sql = new StringBuffer(" insert into tbe_paper(jointime,papername)values(?,?) ");            Connection con = null;        PreparedStatement pstmt = null;        ResultSet  rs=null;        int result=0;        List<PaperModel>