如何在mysql中为特定表自动递增2

时间:2013-01-17 06:49:51

标签: mysql

我有2个表order_retailer和order_customer

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

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

我不想要一个php解决方案。如果有一个命令/查询将特定表的自动增量转换设置为2,请告诉我。 另外我不想更改服务器变量auto_increment_increment或auto_increment_offset或任何其他服务器变量

2 个答案:

答案 0 :(得分:11)

您可以从另一个表中偏移一个表的自动增量字段,即一个表从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;

答案 1 :(得分:6)

不能不能用表格来设置它。

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

希望这有帮助