我有一个EXISTING表,其中包含一个名为ID的主键和其他与发票相关的其他字段.我需要插入旧表中的值并将所有值插入到新的但最近创建的表中.旧表中列出了发票编号,有时发票编号有重复.我需要这个我正在尝试创建的新列,当没有为将来插入的值插入值时调用invoice_id到AUTO_INCREMENT,并且在现有值和未来值上允许DUPLICATES.如果没有插入值,则需要auto_increment.

ID (primary) || invoice_ID (needs to auto_increment AND allow duplicates) || other colums

1 || 1

2 || 2

3 || 2

4 || 3

我尝试了几个命令,这就是发生的事情:

ALTER TABLE `invoices` ADD `invoice_ID` INT NOT NULL AUTO_INCREMENT AFTER `ID` ,

ADD PRIMARY KEY ( `facture` )

结果:

MySQL said:

#1075 - Incorrect table definition; there can be only one auto column and it must be

defined as a key

还试过:

ALTER TABLE `invoices` ADD `invoice_ID` INT NOT NULL AUTO_INCREMENT AFTER `ID` ,

ADD KEY ( `invoice_ID` ) ,

ADD INDEX ( `invoice_ID` )

结果:

#1075 - Incorrect table definition; **there can be only one auto column** and it must

be defined as a key

我还尝试了一些不同的选项,比如当然不添加主键,但似乎只要添加auto_increment请求,它就会使我的查询“AS PRIMARY KEY”.

最佳答案 你可以用触发器来做.这是一个例子.

所以你有你的旧桌子:

drop table if exists invoices_old;

create table invoices_old (

invoice_ID int,

another_column int

);

insert into invoices_old values

(1,11),

(2,12),

(2,13),

(3,14),

(4,15),

(5,16),

(6,17),

(6,18),

(7,19);

要插入新表中的内容:

drop table if exists invoices_new;

create table invoices_new (

id int not null auto_increment,

invoice_ID int default null, /*it's important here to have a default value*/

another_column int,

primary key (id)

);

您复制数据可能是这样的:

insert into invoices_new (invoice_ID, another_column)

select invoice_ID, another_column

from invoices_old;

现在您已在新表中拥有数据,您可以在新表上创建一个触发器来模拟auto_increment列.

drop trigger if exists second_auto_inc;

delimiter $$

create trigger second_auto_inc before insert on invoices_new

for each row

begin

set @my_auto_inc := NULL;

select max(invoice_ID) into @my_auto_inc from invoices_new;

set new.invoice_ID = @my_auto_inc + 1;

end $$

delimiter ;

现在,当您向新表中插入更多行时

insert into invoices_new (another_column)

select 20 union all select 21 union all select 22;

并看看你的表

select * from invoices_new;

有用.

结果:

id invoice_ID another_column

1 1 11

2 2 12

3 2 13

4 3 14

5 4 15

6 5 16

7 6 17

8 6 18

9 7 19

16 8 20

17 9 21

18 10 22

你可能想知道为什么在真正的auto_increment列中,ID从9跳到16.最近在SO上有关于它的好帖子,但我现在找不到它.无论如何,这不用担心. Auto_increment用于确保唯一性,而不是无间隙序列.

mysql自增长2个增加_mysql – 添加第二个自动增量字段并允许重复相关推荐

  1. mysql删除表主键约束_MySQL添加约束

    MySQL添加约束.删除约束及修改约束 MySQL删除约束 将t_student 删除外键约束:alter table 表名 drop foreign key 外键(区分大小写); alter tab ...

  2. mysql中怎样插入外键_MySQL 添加外键

    MySQL 添加外键 MySQL 添加外键 DROP TABLE IF EXISTS `nation`; CREATE TABLE `nation`( `pii_Nation` smallint(2) ...

  3. mysql中平方米显示不出来_MySQL - 添加外键

    目录 整理了一下这个知识,虽然很简单哈,为了以后的方便. 为已经添加好的数据表添加外键 语法: alter table 表名 add constraint FK_ID foreign key(你的外键 ...

  4. MySQL为其他用户创建数据库_MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限...

    1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Pas ...

  5. mysql给用户建表权限_MYSQL添加用户、建表、权限

    1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Pas ...

  6. mysql自增长id为null_主键设为自增字段了, 在添加数据时经常报null id是怎么回事?...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 表结构: CREATE TABLE `t_cmdhistory` ( `hisId` int(11) NOT NULL AUTO_INCREMENT, ` ...

  7. mysql如何进行分组操作的_mysql group by 对多个字段进行分组操作

    在平时的开发任务中我们经常会用到MYSQL的GROUP BY分组, 用来获取数据表中以分组字段为依据的统计数据. 比如有一个学生选课表,表结构如下: Table: Subject_Selection ...

  8. mysql 5.6.28安装图解_mysql 5.6.28 自动安装shell脚本

    mysql5.6.28自动安装shell脚本,为了包装源码包的可靠性,请自行下载mysql-5.6.28.tar.gz,接着我就不说废话,附上自动安装脚本.#!/bin/bash #author ab ...

  9. java读mysql增量_如何复制行并在MySQL中使用自动增量字段插入同一个表?

    如果您需要复杂的解决方案以便经常这样做,您可以使用以下过程: DELIMITER $$ CREATE PROCEDURE `duplicateRows`(_schemaName text, _tabl ...

最新文章

  1. python 把元组转为列表
  2. 使用node.js作为简单的Web服务器
  3. js字符串转化为方法调用
  4. matlab获得帮助的途径,在MATLAB 中获得帮助的途径 ()。A、帮助浏览器B、help 命令C、lookfor 命令D、模糊查询...
  5. python库之sklearn(机器学习)
  6. 【CCCC】L2-024 部落 (25分),,并查集,模板水题,统计集合个数
  7. as400 c语言程序,AS400上的C編程
  8. python 大智慧自定义数据_大智慧自定义数据
  9. Navicat premium注册机打不开的解决办法
  10. 一个野生程序员的真实自述:我是如何从数学专业学渣入坑程序员的
  11. 2018年春季学期《软件工程》班级讨论群中开放性问题群聊记录
  12. 两种方法去除页眉页脚:基于OCR识别后的文本/基于图片切割
  13. 移动硬盘坏了,自己搞定解决方案
  14. 无限流量服务器可靠吗,你的无限流量真纯正吗?别再被骗了!
  15. 如何使用Nmap扫描所有TCP和UDP端口?
  16. Giant Sequoia(UTPC Contest 02-25-22 Div. 2 (Beginner))
  17. 弱网、2G、3G、4G测试
  18. html中怎么做扇形菜单,CSS3实现扇形动画菜单流程详解
  19. 【纪中受难记】——Day23:受刑
  20. Centos7创建及修改用户名和用户组名

热门文章

  1. 压缩网络模型,或者是融合多个神经网络
  2. python 习题集锦
  3. 在 Spring 4.3.9下升级 Velocity 1.7.x to Velocity 2.0.x 出现的问题
  4. 并查集 HDOJ 5441 Travel
  5. 外包:卡卡软件简要思路
  6. vc++怎么利用ado连接数据库(mysql)
  7. iOS6全系列设备完美越狱工具发布
  8. 一个很好的性能监测工具dstat
  9. Office 2010 64位版本
  10. linux下grub的修复