Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 创建自动递增的表格,从10开始递增10_Mysql_Sql - Fatal编程技术网

Mysql 创建自动递增的表格,从10开始递增10

Mysql 创建自动递增的表格,从10开始递增10,mysql,sql,Mysql,Sql,我正在尝试为正在创建的表创建一个自动增量字段,但没有得到预期的结果 创建语句 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

我正在尝试为正在创建的表创建一个自动增量字段,但没有得到预期的结果

创建语句

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 |
+---------------+-----------------+------------+-------------+
插入后的所需输出

+---------------+-----------------+------------+-------------+
| 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

设置这个自动增量,很抱歉,Mysql不支持它


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

MySQL增量只能从1变为1。如果你想让它变成10到10,并且取决于它的用途,你有两个主要的选择:

  • 具有从应用程序逻辑填充的唯一int列(不是自动递增的,递增将在应用程序中处理): 部门id整数主键
  • 在逻辑中使用正常的自动递增列并将其乘以10

  • 您无法直接执行此操作,因为无法分别为每个表设置自动增量偏移(将增加的数字),解决方法是:

     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之外,您将有两个数据相同的表。这里的正确答案是MySQL不支持每个表的自动增量偏移量,它支持每个数据库的全局偏移量。您询问了如何在每个表中执行此操作-它不起作用

    另一个问题是,您可能会试图“手动”计算此值。请不要这样做。如果出于某些美化目的需要自动增量,请不要使用它。它唯一的任务是给出唯一的数字,而偏移用于复制目的


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

    我认为增量步骤特定于某些引擎(而不是innodb)该表已经有一个10的自动增量。如果查看该表的最后一行,自动增量只是起始值,则无法为单个表设置偏移量。是否需要在数据库或报表中输出该值?否则,您可以选择(部门id)*10作为部门id