不同表mySql中的最后一个插入id

不同表mySql中的最后一个插入id,mysql,sql,database,insert,sql-insert,Mysql,Sql,Database,Insert,Sql Insert,我有如下两张表: create TABLE person( id INTEGER not NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), surrname VARCHAR(255) ); create TABLE users( id INTEGER not NULL AUTO_INCREMENT PRIMARY KEY, login VARCHAR(50), password VARCHAR(50), person_id in

我有如下两张表:

create TABLE person(
id INTEGER not NULL AUTO_INCREMENT PRIMARY KEY, 
name VARCHAR(255), 
surrname VARCHAR(255)
); 


create TABLE users(
id INTEGER not NULL AUTO_INCREMENT PRIMARY KEY, 
login VARCHAR(50), 
password VARCHAR(50),
person_id int references person(id)
);
我将insert添加到表“person”:

Insert into person(name,surrname) values ('mark','second');
现在我的问题开始了,因为当我尝试将insert添加到表“users”时, 我必须将最后添加的id放在表“person”中

Insert into users
        (login,password,person_id) 
values ('login123','pass123',>here must be last added id from person table<);`
插入到用户中
(登录名、密码、个人id)
这里的值('login123','pass123',>必须是person表中最后添加的id

这将允许您返回id

Insert into person(name,surrname) values ('mark','second') returning id;

是的,它可以工作,但我想做不同的事情。我想添加第一个插入,在下一个连接中,下一个插入?可能吗

您确实需要在与第一个insert相同的连接中获取最后一个insert id。如果在插入后立即获取,则可以将其作为结果集返回,并将其保存在应用程序中的变量中:

INSERT INTO person(name,surrname) VALUES ('mark','second');

SELECT LAST_INSERT_ID();
像处理任何其他返回值的SELECT语句一样处理后一个语句。将其保存在Java程序的变量中

然后在后续插入中使用该Java变量,将其绑定为参数化语句的值:

Insert into users
        (login,password,person_id) 
values ('login123','pass123',?);`

有很多将Java变量传递给参数化SQL语句的指南。例如:

在第一次插入后,在下一次插入时使用
LAST\u insert\u ID()
。下一次插入应如下所示?插入用户(登录名、密码、个人ID)值('login123','pass123',LAST\u insert\u ID());`假设查询使用相同的连接,一个接一个,并且第一次插入没有错误,是的。第二次查询的值部分可以是:
…value('login123','pass123',LAST_insert_ID())
是的,它可以工作,但我想用不同的方式来做。我想添加第一个插入,然后在下一个连接中添加下一个插入?这是可能的?有人能帮我吗?因为我最终需要在java和JDBC上这样做,所以我不能在一个状态下进行两个插入,所以这是一个大问题。注意语法至少需要v10.5。哦,是的……标题特别是说MySQL,所以这可能是不可接受的。我找不到MySQL实现这一点的参考。我确认,至少8.0版本的MySQL没有实现RETURNING子句。到目前为止,我们确实需要将MariaDB视为一个独特的产品,因为它自2010年分叉以来一直在添加自己的功能。