使用auto_increment创建表,该表从10开始,以10为增量

时间:2015-05-07 13:17:44

标签: mysql sql

我正在尝试为我正在创建的表创建一个auto_increment字段,但是我没有得到所需的结果。

创建声明

create table if not exists departments(
    department_id integer primary key AUTO_INCREMENT,
    department_name varchar(50) not null,
    manager_id int(20) not null,
    location_id int(20) not null    
)AUTO_INCREMENT = 10 engine=innodb;

插入后的当前输出

+---------------+-----------------+------------+-------------+
| department_id | department_name | manager_id | location_id |
+---------------+-----------------+------------+-------------+
|            10 | Administration  |        200 |        1700 |
|            11 | Administration  |        200 |        1700 |
+---------------+-----------------+------------+-------------+
插入后

所需的输出

+---------------+-----------------+------------+-------------+
| department_id | department_name | manager_id | location_id |
+---------------+-----------------+------------+-------------+
|            10 | Administration  |        200 |        1700 |
|            20 | Administration  |        200 |        1700 |
+---------------+-----------------+------------+-------------+

我只想为一个表departments设置此auto_increment。

4 个答案:

答案 0 :(得分:0)

很抱歉,但Mysql只是不支持它。

我必须问一个问题,你为什么要这样做呢?自动增量ID通常是不透明的,您唯一关心的是它们是唯一的。

答案 1 :(得分:0)

MySQL增量只会从1增加到1.如果你想要它从10到10,并且根据它的目的,你有两个主要选择:

  1. 拥有一个从应用程序逻辑中填充的唯一int列(不会自动递增,将在应用程序中处理递增): department_id整数主键
  2. 拥有正常的自动增量列并将其乘以10,然后再在逻辑中使用它。

答案 2 :(得分:0)

你不能直接这样做,因为不能分别为每个表设置自动增量偏移(它将增加的数量),解决方法是:

 INSERT INTO myDepartments(department_id,department_name,manager_id,location_id)
    SELECT (department_id * 10) as department_id,
     department_name , manager_id , location_id 
    FROM departments

创建一个具有完全相同字段的新表,编写一个触发器,当它们插入旧表时将为新表添加值,所有已编写的逻辑仍将使用旧表和所有如果你使用新表,那么与* 10系统一起使用的新逻辑也会起作用(确保不要在新表中插入),缺点是:除了id之外,你将有2个表具有相同的数据

答案 3 :(得分:0)

这里的正确答案是MySQL不支持自动增量偏移每个表,它确实支持每个数据库全局。你问过每个表怎么做 - 它不起作用。

另一个问题是你可能想要“手动”计算这个值。只是不要。如果您需要auto_increment用于某些美化目的 - 请勿使用它。它唯一的工作是提供唯一的数字,并且偏移用于复制目的。

我建议创建另一个列,您可以在单个进程中更新,也可以使用MySQL事件调度程序定期更新带有数字的记录。