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,并且取决于它的用途,你有两个主要的选择:
您无法直接执行此操作,因为无法分别为每个表设置自动增量偏移(将增加的数字),解决方法是:
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