mysql自增长2个增加_mysql – 添加第二个自动增量字段并允许重复
我有一个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 – 添加第二个自动增量字段并允许重复相关推荐
- mysql删除表主键约束_MySQL添加约束
MySQL添加约束.删除约束及修改约束 MySQL删除约束 将t_student 删除外键约束:alter table 表名 drop foreign key 外键(区分大小写); alter tab ...
- mysql中怎样插入外键_MySQL 添加外键
MySQL 添加外键 MySQL 添加外键 DROP TABLE IF EXISTS `nation`; CREATE TABLE `nation`( `pii_Nation` smallint(2) ...
- mysql中平方米显示不出来_MySQL - 添加外键
目录 整理了一下这个知识,虽然很简单哈,为了以后的方便. 为已经添加好的数据表添加外键 语法: alter table 表名 add constraint FK_ID foreign key(你的外键 ...
- MySQL为其他用户创建数据库_MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限...
1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Pas ...
- mysql给用户建表权限_MYSQL添加用户、建表、权限
1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Pas ...
- mysql自增长id为null_主键设为自增字段了, 在添加数据时经常报null id是怎么回事?...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 表结构: CREATE TABLE `t_cmdhistory` ( `hisId` int(11) NOT NULL AUTO_INCREMENT, ` ...
- mysql如何进行分组操作的_mysql group by 对多个字段进行分组操作
在平时的开发任务中我们经常会用到MYSQL的GROUP BY分组, 用来获取数据表中以分组字段为依据的统计数据. 比如有一个学生选课表,表结构如下: Table: Subject_Selection ...
- mysql 5.6.28安装图解_mysql 5.6.28 自动安装shell脚本
mysql5.6.28自动安装shell脚本,为了包装源码包的可靠性,请自行下载mysql-5.6.28.tar.gz,接着我就不说废话,附上自动安装脚本.#!/bin/bash #author ab ...
- java读mysql增量_如何复制行并在MySQL中使用自动增量字段插入同一个表?
如果您需要复杂的解决方案以便经常这样做,您可以使用以下过程: DELIMITER $$ CREATE PROCEDURE `duplicateRows`(_schemaName text, _tabl ...
最新文章
- python 把元组转为列表
- 使用node.js作为简单的Web服务器
- js字符串转化为方法调用
- matlab获得帮助的途径,在MATLAB 中获得帮助的途径 ()。A、帮助浏览器B、help 命令C、lookfor 命令D、模糊查询...
- python库之sklearn(机器学习)
- 【CCCC】L2-024 部落 (25分),,并查集,模板水题,统计集合个数
- as400 c语言程序,AS400上的C編程
- python 大智慧自定义数据_大智慧自定义数据
- Navicat premium注册机打不开的解决办法
- 一个野生程序员的真实自述:我是如何从数学专业学渣入坑程序员的
- 2018年春季学期《软件工程》班级讨论群中开放性问题群聊记录
- 两种方法去除页眉页脚:基于OCR识别后的文本/基于图片切割
- 移动硬盘坏了,自己搞定解决方案
- 无限流量服务器可靠吗,你的无限流量真纯正吗?别再被骗了!
- 如何使用Nmap扫描所有TCP和UDP端口?
- Giant Sequoia(UTPC Contest 02-25-22 Div. 2 (Beginner))
- 弱网、2G、3G、4G测试
- html中怎么做扇形菜单,CSS3实现扇形动画菜单流程详解
- 【纪中受难记】——Day23:受刑
- Centos7创建及修改用户名和用户组名