[英]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.