我的数据库中有两个表供用户使用。
users
:
id|username|password|registration_date|
1 |bruce |****** |2017-03-04 |
2 |jason |***** |2017-03-06 |
3 |brad |******* |2017-03-12 |
google_users
:
id|username|password|registration_date|
1 |jimmy |***** |2017-03-05 |
2 |wade |******* |2017-03-08 |
我想在新用户使用google注册时为这两个表应用相同的AUTO_INCREMENT索引
这样的事情:
users
:
id|username|password|registration_date|
1 |bruce |****** |2017-03-04 |
3 |jason |***** |2017-03-06 |
5 |brad |******* |2017-03-12 |
google_users
:
id|username|password|registration_date|
2 |jimmy |***** |2017-03-05 |
4 |wade |******* |2017-03-08 |
我该怎么做?
答案 0 :(得分:1)
我将投票反对这个表设计,并建议您只维护一个用户表:
users (id, username, password, registration_date)
要跟踪他们注册的方法,您可以创建第二个表:
accounts (id, user_id, type_id)
type_id
可以指向第三个表格,表明Google或其他内容是否是注册的来源。另请注意,如果您需要,accounts
表可以让用户拥有多个注册关系。
基本思想是在两个表中维护一个自动增量列是不可能的,或者至少是丑陋的。这不是SQL中通常支持/需要的功能。因此,如果您发现自己有此需求,则应首先仔细查看数据库设计。
答案 1 :(得分:1)
没有建议,但如果你真的希望它以这种方式发生:
您可以尝试在MySQL中实现此设置:
mysql> SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 2 |
然后对于你的表,你可以这样做:
ALTER TABLE users AUTO_INCREMENT = 1;
ALTER TABLE google_users AUTO_INCREMENT = 2;
所以,现在,你的自动增量将增加2,它会给你预期的结果。
但正如我所说,这会影响整个数据库。所有增量都将由2而不是1来完成。