繁体   English   中英

如何使用nestjs重置mysql中的auto_increment id

[英]How to reset auto_increment id in mysql using nestjs

我有一个包含 id、body、created_at 字段的提要表。 当我在 Delete() 方法之后在 postman 上发送 Post() 时,提要表的 id auto_increments 就好像一条记录没有被删除一样。 我不确定如何纠正这个问题,我在后端使用 MySql 数据库、nestjs 和 TypeORM。 饲料 controller.ts

 @Controller("feed") export class FeedController { constructor(private feedService: FeedService) {} @Post() createNewPost(@Body() feedPost: HomeFeedDto): Observable<HomeFeedDto> { return this.feedService.createPost(feedPost); } @Get() allPosts(): Observable<HomeFeedDto[]> { return this.feedService.getAllPosts(); } //api delete method @Delete(":id") // delete home feed post by id deleteFeedPost(@Param("id") id: number): Observable<DeleteResult> { return this.feedService.deletePost(id); } }

这正是自动递增列在数据库中的工作方式。 一旦创建了使用特定 id 值的记录,它就永远不能再次使用,即使拥有它的记录已被删除。

在有很多记录的情况下,您期望发生什么? 如果当前递增的 id 是 1000 然后你删除了id = 1的记录,你会期望下次插入记录时它会再次被赋予id = 1而不是id = 1001吗?

有很多实际原因可以解释为什么重新使用以前发布的 ID 对业务逻辑非常不利,尤其是当您的 API 的消费者拥有旧记录的缓存版本时。

如果你真的想实现这种行为,你将不得不考虑在数据库或你的 API 内部编写自定义函数,它检查序列中是否缺少任何 id,然后手动分配你自己的 id,而不是让数据库这样做. 强烈建议您不要这样做,因为您所看到的行为是出于某种原因而设计的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM