![](/img/trans.png)
[英]Using variable in setting mysql INNODB AUTO_INCREMENT table value
[英]MySQL AUTO_INCREMENT by group using InnoDB or alternatives
我正在设计一个使用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.按组自动递增会更清洁。
我想对已经遇到并成功解决此问题的那些用户提供一些反馈/意见。 也许,还有我没有想到的另一种解决方案。 也许,还有另一种我没想到的组织表格的方式。
使用简单的AUTO_INCREMENT并忽略存储:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.