当从 Delphi Firedac插入mysql表时,我需要新的自动增量ID

lztngnrs  于 2022-11-04  发布在  Mysql
关注(0)|答案(2)|浏览(291)

我有一个具有自动增量ID的表。多个用户将向该表中插入内容。没有可用于查找刚添加的记录的可识别字段,我需要该记录的自动ID。获取新添加记录的最新ID的最简单方法是什么?
一个想法是在应用程序中生成一个GUID,并将其添加到记录中,然后使用它来标识新添加的记录,有没有更好的方法来做到这一点?

d5vmydt9

d5vmydt91#

我们可以使用一个触发器来记录最后一次插入的id以及执行插入语句的数据库用户。这不会区分应用程序用户,因为多个应用程序用户可能使用同一个数据库用户帐户来执行其工作)

create table test (id int primary key auto_increment, content varchar(10));
create table record (id int,content varchar(10),`user` varchar(20));

delimiter //
create trigger record_insert_id after insert on test for each row
begin
if not exists (select 1 from record where `user`=user()) then
insert record values(new.id,new.content,user());
else
update record set id=new.id,content=new.content where `user`=user();
end if; 
end//
delimiter ;

-- have user1 insert:
insert test (content) values('aaa'),('bbb');

-- have user2 insert:
insert test (content) values('xxx'),('yyy');

-- have user3 insert:
insert test (content) values('abcxyz');

select * from record;

-- result set:

# id, content, user

2, bbb, user1@localhost
4, yyy, user2@localhost
5, abcxyz, user3@localhost
3htmauhk

3htmauhk2#

用途

SELECT LAST_INSERT_ID()

获取表中已插入或更新的最后一行的LAST ID。

相关问题