Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取mysql中insert后的最后一个ID_Mysql - Fatal编程技术网

获取mysql中insert后的最后一个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语句的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
     ,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。