ppgjx 发表于 2022-8-9 19:16

数据库使用自增id的一个逻辑问题

比如某个业务,他向服务器请求插入一条记录,正常操作没问题,但是他同时还要求把插入的这条记录的id返回给他,这就会发生一个问题,我得再去查一次表拿到这个记录id,发生了一次查询一次插入,但是这个两次好像真的没必要吧,如果用雪花id就没有问题只会发生一次插入,因为主键是自己生成的,但是雪花id长度太长了,我只想用自增id 那种很小的数字做主键 1 2 3 4 5这种 , 有什么其他好办法不{:1_937:}

unmask 发表于 2022-8-9 19:26

正常的orm框架在插入的同时会返回pk的,至少目前我用过的都是这个样子的

小公主々 发表于 2022-8-9 19:32

用框架,调用 insert(Obj obj) 之后,再查询 obj.getId() 就能拿到咯

jmsdqwl 发表于 2022-8-9 19:47

帝国cms可以 返回 当前递增的ID

Cool_Breeze 发表于 2022-8-9 20:29

小公主々 发表于 2022-8-9 19:32
用框架,调用 insert(Obj obj) 之后,再查询 obj.getId() 就能拿到咯

框架是不是也是按照楼主所描述那样实现的?插入后再查询。因为这个问题我也想了解一下。不知道框架的实现原理。

kkfgef 发表于 2022-8-9 20:34

PDO的话,有这个lastInsertId();每次返回自增ID

Derrick92 发表于 2022-8-9 20:37

等待是否有人解答下;
正常来讲,insert操作 就是返回 int值(表明是否插入成功而已); 不会再去直接返回 整个值。?

rexyan 发表于 2022-8-9 20:48

flush 一下就可以拿到吧

os51 发表于 2022-8-9 20:55

https://stackoverflow.com/questions/6272272/batchsqlupdate-how-to-get-auto-generated-keys
https://stackoverflow.com/questions/4224228/preparedstatement-with-statement-return-generated-keys
https://stackoverflow.com/questions/41725492/how-to-get-auto-generated-keys-of-batch-insert-statement
https://stackoverflow.com/questions/2770877/spring-jdbctemplate-insert-blob-and-return-generated-key
https://stackoverflow.com/questions/15684297/how-to-get-generated-keys-from-jdbc-batch-insert-in-oracle

test0421 发表于 2022-8-9 20:55

是用redis可以实现自增id,但是需要考虑并发、全局唯一问题
页: [1] 2
查看完整版本: 数据库使用自增id的一个逻辑问题