【发布时间】:2012-03-21 22:39:12
【问题描述】:
我刚开始学习 jdbc 并用它进行各种测试。
我遇到了以下情况
- 设置保存点
- 创建准备好的语句并尝试执行(将数据插入到具有不存在外键值的表中
- execute() 方法失败,我执行回滚。
- 当我执行有效查询时,会将一行插入到数据库中,但主键设置为 n+2 而不是 n+1(其中 n 是最后插入的值)。即使查询失败,也要猜测索引自动增量。
有没有一种机制可以避免这种情况并设置n+1?
注意。我正在使用 MySQL。
谢谢。
【问题讨论】:
-
我同意那个帖子,但我不想在我的应用逻辑中考虑到这一点。我只是想知道为什么会出现这种现象,以及是否有办法克服这一点。
-
发生这种情况是因为 id 生成独立于事务。如果不付出很多努力,就没有办法克服它。不要为 id 赋予任何含义。
-
这就是 Oracle 数据库没有 AUTO_INCREMENT 字段的原因。请改用触发器。