双表自动增量

pgvzfuti  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(272)

我的数据库中有两个表供用户使用。 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时,我想对这两个表应用相同的自动增量索引
像这样: `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       |

我该怎么做?

dddzy1tm

dddzy1tm1#

我将投票反对此表设计,并建议您只维护一个users表:

users (id, username, password, registration_date)

要跟踪他们注册的方法,可以创建第二个表:

accounts (id, user_id, type_id)

这个 type_id 我们可以指向第三个表,指出是google还是其他什么东西是注册的来源。还要注意的是 accounts 表中可以有一个具有多个注册关系的用户,如果需要的话。
其基本思想是,在两个表之间保持一个自动递增列不是不可能,就是至少很难看。这不是sql通常支持/需要的特性。因此,如果您发现自己有这样的需求,应该首先仔细研究数据库设计。

kyvafyod

kyvafyod2#

不建议,但如果你真的想这样做:
您可以尝试在mysql中实现此设置:

mysql> SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 2     |

对于您的table,您可以:

ALTER TABLE users AUTO_INCREMENT = 1;
ALTER TABLE google_users AUTO_INCREMENT = 2;

所以,现在,你的自动增量将增加2,它会给你预期的结果。
但正如我所说,这会影响你的整个数据库。所有的增量将由1变为2。

相关问题