即使插入查询失败/设计问题,自动递增的主键也会增加?

时间:2013-09-03 13:52:34

标签: php mysql normalization

answer to a similar question只是忽略了这个问题。我根本就不买那个最好的答案。

我数据库中的相关表格:

  • 场地( sceneid ,省,市,场地)
  • 成员( memberid ,姓氏,名字,生日,电话,招募)
  • 事件( sceneid ,类型, memberid ,vip,eventfee,costid,日期

Venueid是场地中的auto_incremented主键,省,市和场地的组合必须是唯一的,否则插入将失败。

这一切都有效,但即使插入失败,也会困扰我sceneid,所以我最终得到主键空白。有没有更好的方法来强制执行唯一性,或者我试图将这些表联系起来的方式不是最佳实践,它们应该真的结合起来吗?

2 个答案:

答案 0 :(得分:1)

  

我根本就不买那个最好的答案。

那么,你需要了解更多。

坦率地说,不要将唯一标识符作为一个数字。它只是偶然发生的数字。将其作为识别您的记录的抽象事项。

答案 1 :(得分:1)

没有真正解决此MYSQL的方法,PostGre具有相同的行为,即使在事务中,如果事务失败,auto_incremented值也不会回滚。

http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html

对您的问题最合适的解决方案可能是利用自动增量锁定。