【问题标题】:How to auto increment by 2 for a particular table in mysql如何为mysql中的特定表自动增加2
【发布时间】:2013-01-17 06:49:51
【问题描述】:

我有 2 个表 order_retailer 和 order_customer

它们都有自动递增的主键 order_id

为了在整个系统中保持订单 ID 唯一,我希望 order_retailer 的 ID 仅为偶数,而 order_customer 的 ID 为奇数。为此,我必须将自动增量的增量值设置为 2。是否可以在 mysql 中按表设置。

我不想要 php 解决方案。请让我知道是否有命令/查询将特定表的自动增量移位设置为 2。 另外我不想更改服务器变量 auto_increment_increment 或 auto_increment_offset 或任何其他服务器变量

【问题讨论】:

  • 为什么 mysql 中的 id 必须是唯一的?引用它们时只需添加一个唯一键,例如: 'RET' 。 $order_id;或 'CUST' 。 $order_id; ?

标签: mysql


【解决方案1】:

您可以将一个表的自动增量字段从另一个表中偏移,即一个表从 1 开始,而另一个从 1000000(或根据您的使用模式选择的其他值)开始。

CREATE TABLE table1 (id BIGINT UNSIGNED AUTO_INCREMENT);
CREATE TABLE table2 (id BIGINT UNSIGNED AUTO_INCREMENT) AUTO_INCREMENT = 1000000;

您还可以根据需要选择自动增量列类型。 BIGINT UNSIGNED 的范围是 0..18446744073709551615,应该涵盖大多数情况。

试试

SET @@auto_increment_increment=2;
SET @@auto_increment_offset=2;

【讨论】:

    【解决方案2】:

    不,不可能按表格设置。

    Mysql 有 2 个变量 auto_increment_incrementauto_increment_offset,默认情况下这两个变量的值都是 1。如果您更改任何值,它将具有全局影响。

    为解决您的问题,创建一个存储过程,该过程将根据需要具有偶数。

    参考此链接http://dev.mysql.com/doc/refman/5.0/en/replication-options-master.html#sysvar_auto_increment_increment

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      相关资源
      最近更新 更多