获取mysql中insert后的最后一个ID
如何获取最后一条insert语句的ID 我正在使用触发器为每条记录创建一个ID获取mysql中insert后的最后一个ID,mysql,Mysql,如何获取最后一条insert语句的ID 我正在使用触发器为每条记录创建一个ID INSERT INTO table1_seqdocument VALUES (NULL); SET NEW.tracknum = CONCAT('DOC', LPAD(LAST_INSERT_ID(), 3, '0')); 我需要另一张桌子的身份证 这是我的插入语句 INSERT INTO tble_transaction ( tracknum ,signatoryid ,
INSERT INTO table1_seqdocument VALUES (NULL);
SET NEW.tracknum = CONCAT('DOC', LPAD(LAST_INSERT_ID(), 3, '0'));
我需要另一张桌子的身份证
这是我的插入语句
INSERT INTO tble_transaction
(
tracknum
,signatoryid
,signed
,status
,signatorylevel
)
VALUES
(?,?,?,?,? )
我想要的是检索ID并将其用于另一个insert语句,但使用其他表。可能吗?谢谢您可以使用@@identity
SELECT @@IDENTITY AS [@@IDENTITY];
LAST_INSERT_ID()只能告诉您整个数据库连接最近自动生成的ID的ID,而不是每个表的ID,这也是为什么查询应该只读取SELECT LAST_INSERT_ID(),而不指定表的原因。一旦在该连接上触发另一个INSERT查询,它就会被覆盖。如果在插入到某个表时需要生成的ID,则必须在插入后立即运行SELECT LAST_insert_ID()(或者使用为您执行此操作的API函数)
如果要在任意表中获取当前最新的ID,必须对该表执行SELECT MAX(ID),其中ID是ID列的名称。但是,如果该行已被删除,则这不一定是最近生成的ID;如果另一个连接设法在您自己的插入和您选择的ID之间执行插入,则这也不一定是从您的连接生成的ID
(对于记录,您的查询实际上返回N行,其中包含该数据库连接上最近生成的ID,其中N是表1中的行数。)请显示完整的create trigger语句。是在
tble\u事务上吗
?我无法重现该问题。您发布的代码运行良好:请参阅。请提供create table
和create trigger
语句,查看可能的错误。您是否定义了主键和自动增量?将数据库内部用作超出数据库范围的某种有意义的值只是自找麻烦。重新考虑你的设计。在一次插入之后,询问者已经在使用LAST\u USER\u ID()
。我甚至不建议做选择max(id)
。你的最后一句话与这个问题有什么关系?问题中没有N行的查询,也没有表1。