两个表的auto_increment

时间:2018-05-16 09:14:11

标签: mysql auto-increment

我的数据库中有两个表供用户使用。

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       |

我该怎么做?

2 个答案:

答案 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来完成。