回答

收藏

保留mySQL自动递增的ID?

技术问答 技术问答 271 人阅读 | 0 人回复 | 2023-09-14

我们希望从mySQL获得自动递增ID,而无需实际存储它,直到其他与mysql在不相关的过程成功完成之前,如果出现异常或应用程序崩溃,则不会存储该项目。我们需要使用它ID作为其他过程的密钥。本质上,我们应该保留自动增量,并将最后一行插入mySQL在知道整个过程成功完成之前,我们不想插入任何行。; w' C4 e, M6 i
可以在mySQL保留这种自动增量吗?- Q$ V) j4 }% m. l+ N
注:我知道SQL事务。但是,我们的过程包括需要在数据库外进行的非SQL事务。这些过程可能需要几分钟到几个小时。但我们不希望任何其他使用相同的自动增长ID这就是为什么我们要保留一个自动递增的过程。ID没有真正将任何数据插入数据库的原因。『。% H% T, ~1 q1 r* o% w5 ?
                                                                + f8 A% D; q3 f4 C
    解决方案:                                                                ( c7 p0 I4 ~7 b
                                                                生成自动增量值的唯一方法是尝试插入。但是你可以回滚事务,并且仍然读取它ID。在MySQL
  N! R: }. _# l3 ^. C2 B5.在更高版本中,默认行为是在回滚时不会返回自动增量值。3 p, b$ r  Z4 a
START TRANSACTION;INSERT INTO mytable () VALUES ();ROLLBACK;SELECT LAST_INSERT_ID() INTO @my_ai_value;现在,你可以确定没有其他事情会尝试使用这个值,所以你可以在外部过程中使用它,最后手动插入一个ID值(当您插入特定值时ID值时,MySQL不会产生新值)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则