我正在使用MySQL数据库设计一个Web应用程序,我仍然坚持我的数据库设计的一个优点。
以下是我想使用InnoDB引擎存储的数据类型示例:
user_id account_id
1 1
1 2
1 3
2 1
2 2
3 1
从上面可以清楚地看出,我希望account_id能够为每个用户自动增加。以下是我遇到的一些问题:
我知道要自动执行此操作我可以使用MyISAM引擎,但在我完成一些阅读后,我已经意识到当更新发生时,此引擎将锁定整个表而不仅仅是一排。这对我没有好处。此外,MyISAM不强制引用完整性,我非常希望保留它。
我已经阅读了其他人对此问题的解决方案,他们使用了触发器。当然,我可以使用触发器,但我不是非常喜欢触发器,因为它们比单个表更难维护。
我可能会使用序列,但我认为为每个用户维护一个单独的序列会很难看。
我可以简单地使用唯一的AUTO_INCREMENT而不考虑user_id,这样可以很好地工作。我不喜欢这两件事:1。这样,我的smallint可能会增长到int或bigint,这将需要更多的存储空间。我知道存储空间很便宜,但我仍然希望将其最小化。 2.按组自动递增会更加清晰。
我想获得一些遇到并成功解决此问题的用户的反馈/意见。也许,我还没有想到另一个解决方案。也许,还有另一种组织我的桌子的方法,我没有想过。
答案 0 :(得分:1)
使用简单的AUTO_INCREMENT并忽略存储: