1

类似问题的答案是忽略这个问题。我根本不买这是最好的答案。

我数据库中的相关表:

  • 场地(场地id,省,市,场地)
  • 成员(memberid、姓氏、名字、生日、电话、招聘ID)
  • 事件(venueid、type、memberid、vip、eventfee、costid、date

Venueid是venues中的auto_incremented主键,省、市、venue的组合必须是唯一的,否则插入失败。

一切正常,但让我感到困扰的是,即使插入失败,venueid 也会增加,所以我最终得到了主键间隙。有没有更好的方法来强制唯一性,或者我试图关联这些表的方式不是最佳实践,它们真的应该结合起来?

4

2 回答 2

1

我根本不买这是最好的答案。

那么,你需要了解更多。

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

于 2013-09-03T14:09:16.223 回答
1

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

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

最接近您的问题的正确解决方案可能是使用自动增量锁定。

于 2013-09-03T14:19:49.180 回答