我正在尝试为我正在创建的表创建一个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。
答案 0 :(得分:0)
很抱歉,但Mysql只是不支持它。
我必须问一个问题,你为什么要这样做呢?自动增量ID通常是不透明的,您唯一关心的是它们是唯一的。
答案 1 :(得分:0)
MySQL增量只会从1增加到1.如果你想要它从10到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事件调度程序定期更新带有数字的记录。