如何获取最后一个插入语句的ID
我使用触发器为每条记录创建一个ID
INSERT INTO table1_seqdocument VALUES (NULL);
SET NEW.tracknum = CONCAT('DOC', LPAD(LAST_INSERT_ID(), 3, '0'));
我需要其他表的ID
这是我的插入声明
INSERT INTO tble_transaction
(
tracknum
,signatoryid
,signed
,status
,signatorylevel
)
VALUES
(?,?,?,?,? )
我想要的是检索ID并将其用于另一个插入语句,但使用其他表。可能吗?谢谢
答案 0 :(得分:0)
您可以使用@@ identity
SELECT @@IDENTITY AS [@@IDENTITY];
答案 1 :(得分:0)
LAST_INSERT_ID()只能告诉您整个数据库连接最近自动生成的ID的ID,而不是每个单独的表,这也是查询应该只读取SELECT LAST_INSERT_ID()的原因 - 而不指定表。一旦在该连接上触发另一个INSERT查询,它就会被覆盖。如果在插入某个表时需要生成的ID,则必须在执行此操作后立即运行SELECT LAST_INSERT_ID()(或使用一些为您执行此操作的API函数)。
如果您想要当前在任意表中的最新ID,您必须在该表上执行SELECT MAX(id),其中id是您的ID列的名称。但是,这不一定是最近生成的ID,如果该行已被删除,也不一定是从您的连接生成的,以防另一个连接设法在您自己的INSERT和您选择的ID之间执行INSERT。
(对于记录,您的查询实际上返回包含该数据库连接上最近生成的ID的N行,其中N是table1中的行数。)