【问题标题】:AUTO_INCREMENT for two tables两个表的 AUTO_INCREMENT
【发布时间】:2018-05-16 09:14:10
【问题描述】:

我的数据库中有两个用户表:

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       |

我该怎么做?

【问题讨论】:

  • 它们是同一张表,请更新问题
  • id 不同。

标签: mysql auto-increment


【解决方案1】:

我将投票反对这种表设计,并建议您只维护一个用户表:

users (id, username, password, registration_date)

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

accounts (id, user_id, type_id)

type_id 可以指向第三个表,表明 Google 或其他什么是注册的来源。另请注意,accounts 表可以有一个具有多个注册关系的用户,如果您需要的话。

基本思想是在两个表中维护一个自增列要么是不可能的,要么至少是丑陋的。这不是 SQL 通常支持/需要的功能。因此,如果您发现自己有这种需求,您应该首先仔细查看您的数据库设计。

【讨论】:

  • 这正是我想说的,但他需要他的设计
  • @BasilBattikhi 这个设计有缺陷。应用程序如何找到用户?它必须搜索多个表。这对我来说没有意义。
  • 你确定这是不可能的吗??
  • 很少有事情是不可能的,但是在两个表之间保持自动增量不会随 MySQL 开箱即用 AFAIK 一起提供。所以你必须自己构建它。数据库设计的大量工作可以变得更简单。
  • @TimBiegeleisen 我也不完全同意你的回答,如果你的设计得到应用,那么他可以让所有用户在桌子上扔左加入,这让你实际上不仅可以注册多个社交媒体帐户谷歌
【解决方案2】:

不建议,但如果您真的希望以这种方式发生:

您可以尝试在 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 完成。

【讨论】:

  • 这如何保证预期的订购?这两个自增 ID 彼此一无所知。
  • 你是对的。它不会。我只是看了预期的结果,但不明白他到底想做什么。
  • 好吧,如果我们知道对两个表的插入总是在 unicen 中发生,那么我们可以错开 ID。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-11
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多