4

我有 2 个表 order_retailer 和 order_customer

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

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

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

4

2 回答 2

12

您可以从另一个表中偏移一个表的自动增量字段,即一个表从 1 开始 ids,而另一个从 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;
于 2013-01-17T07:06:15.193 回答
7

不,不可能明智地设置它。

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

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

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

希望这可以帮助

于 2013-01-17T07:07:58.200 回答