mysql 批量修改自增数据_SqlServer Mysql数据库修改自增列的值及相应问题的解决方案...

2023-11-11

SQL Server 平台修改自增列值

由于之前处理过sql server数据库的迁移工作,尝试过其自增列值的变更,但是通过SQL 语句修改自增列值,是严格不允许的,直接报错(无法更新标识列 '自增列名称‘)。sql server我测试是2008、2012和2014,都不允许变更自增列值,我相信SQL Server 2005+的环境均不允许变更字段列值。

如果非要在SQL Server 平台修改自增列值的,那就手动需要自增列属性,然后修改该列值,修改成功后再手动添加自增列属性。如果在生成环境修改自增列的话,建议在空闲时间(零点以后,平台或网站使用的用户很少的时间段)来处理这类问题。数据量大且多表关联的,那就通过T-SQL来变更。该方法最大的缺点就是要通过手工辅助取消和添加自增属性的。

还有一个方法,先将要修改的数据整理为T-SQL的插入脚本,再删除这批要修改的数据,在通过显示插入数据来实现。这种方式适用于要变更不较少的单表记录,该方法到时比较灵活的。

更简单的方法,那就是如果仅仅若干条,那就让运营人员重新发布信息,删除以前的数据。

还有网上通过修过T-SQL语句取消自增属性,我在SQL Server 2005+环境测试均未通过,相应的T-SQL代码如下:

EXEC sys.sp_configure

@configname = 'allow updates', -- varchar(35)

@configvalue = 1; -- int

EXEC sys.sp_configure

@configname = 'show advanced options' , -- varchar(35)

@configvalue = 1; -- int

RECONFIGURE WITH OVERRIDE;

GO

UPDATE sys.syscolumns

SET colstat = 1

WHERE id = OBJECT_ID(N'PrimaryKeyAndIdentityUpdateTestDataTable', 'U')

AND name = N'ID'

AND colstat = 1;

UPDATE sys.columns

SET is_identity = 0

WHERE object_id = OBJECT_ID(N'PrimaryKeyAndIdentityUpdateTestDataTable', 'U')

AND name = N'ID'

AND is_identity = 1;

执行后的结果如下:

abfa61df28f4eb25f6117786fcef89aa.png

MySQL 平台修改自增列值

mysql平台修改自增列值,有些麻烦的。mysql中存在自增列,如果其引擎是myisam,则该列可以为独立主键列,也可以为复合主键列,即该列必须为主键的关联列;如果其引擎是innodb,则该列必须是独立主键列。要直接修改两个自增列值对调变更,肯定是不行的。

我采用的方法是将两个自增列值(比如1、2)分为以下三个步骤来实现:

1、先将自增列值为1的修改为0;

2、再将自增列值为2的修改为1;

3、再将自增列值为0的修改为2;

以下两种数据引擎的测试环境均是mysql 5.6。

数据库引擎为innodb的前提下,具体的mysql测试代码如下:

drop table if exists identity_datatable;

create table identity_datatable (

id int not null AUTO_INCREMENT,

name varchar(10) not null,

primary key (id)

) engine=innodb,default charset=utf8;

insert into identity_datatable (id, name)

values (1, '1'),(2,'2');

insert into identity_datatable (id, name)

values (3, '3'),(4,'4');

select *

from identity_datatable;

-- 直接修改不可行

-- update identity_datatable

-- set id = case when id = 1 then 2 when id = 2 then 1 end

-- where id in (1, 2);

update identity_datatable

set id = 0

where id = 1;

update identity_datatable

set id = 1

where id = 2;

update identity_datatable

set id = 2

where id = 0;

select *

from identity_datatable;

未修改前的数据表结果,如下图:

8fb8db27e324b2182d0d887915b27a2a.png

修改后的数据表结果,如下图:

fc5c1e36b1570d6b3c62f7d3a4133549.png

注意:

1、采用了两个数字进行交换的方法。

2、引入的中间值最好<=0的数字。

3、仅仅提供一种解决方法,也可采用sql server平台的修改方法(1、先取消自增属性后变更最后增加自增属性,2、整理T-SQL脚本重新插入----小数据量时可以;3、运营人员手工重新添加,也是数据量小的情况下)。

数据库引擎为myisam的前提下,具体的mysql测试代码如下:

drop table if exists autoincremenet_datatable_myisam;

create table autoincremenet_datatable_myisam (

tid int not null,

id int not null auto_increment,

name varchar(20) not null,

primary key(id)

) engine = myisam, default charset = utf8;

insert into autoincremenet_datatable_myisam (tid, id, name)

values(1,1,'a'),(2,2,'b'),(3,3,'c'),(4,4,'d');

select *

from autoincremenet_datatable_myisam;

update autoincremenet_datatable_myisam

set id = 0;

where id = 1;

select *

from autoincremenet_datatable_myisam;

update autoincremenet_datatable_myisam

set id = 1;

where id = 2;

select *

from autoincremenet_datatable_myisam;

update autoincremenet_datatable_myisam

set id = 2;

where id = 0;

select *

from autoincremenet_datatable_myisam;

注意:

1、以上测试中的变更不可行。

2、疑问“第一条update和其后面的select确实看到了修改后的值,但是随后的sql继续执行,均报错却又恢复了未修改之前的状态“,这个还不清楚,需要继续研究。

Oracle平台的没有接触,不晓得,熟悉oracle平台的博友针对其自增列的变更做个测试或给出个总结。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql 批量修改自增数据_SqlServer Mysql数据库修改自增列的值及相应问题的解决方案... 的相关文章

  • 图灵学院Java架构师课程,基于java

    主要功能模块 1 登录 输入账号密码和验证码登录 2 用户信息模块 3 菜单模块 4 角色模块 5 项目竞赛活动申请模块 6 项目竞赛经费申请模块 7 项目竞赛活动管理审批模块 8 项目个人赛报名模块 9 项目团队赛报名模块 10 项目结题
  • LINUX软中断-ksoftirqd

    前言 在上一篇 LINUX软中断 softirq的描述中 提到过ksoftirqd 这篇文章就介绍ksoftirqd ksoftirqd 是什么 ksoftirqd 是个内核线程 在创建的时候是绑定cpu的 每一个core对应生成一个kso
  • C++基础教程——递归

    介绍 程序调用自身的编程技巧称为递归 recursion 递归做为一种算法在程序设计语言中广泛应用 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法 它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解 递
  • java高并发系列之JMM相关的一些概念

    JMM java内存模型 由于并发程序要比串行程序复杂很多 其中一个重要原因是并发程序中数据访问一致性和安全性将会受到严重挑战 如何保证一个线程可以看到正确的数据呢 这个问题看起来很白痴 对于串行程序来说 根本就是小菜一碟 如果你读取一个变
  • 实习生面试软件测试岗位指南

    实习生面试软件测试岗位指南 最近一直在面试测试实习生的岗位 发现实习生的基础知识参差不齐 有的基本做什么就来面试 这样子会浪费实习机会 有的好机会都错过了 下面给实习同学一些建议 1 公司招实习生的目的 1 软件测试好入门 实习生做项目好上
  • 学习爬虫总结(一)

    作为一名大三狗 以前的两年似乎也没有坚持学习什么 现在我决定我要每天坚持学一点东西 来提升自己 爬虫这个名词第一次出现在我的印象中是学习中国大学MOOC里面的python语言程序设计慕课 那时候我对爬虫并不了解 也没有学习的兴趣 最近在看一
  • Springboot项目Aop、拦截器、过滤器横向对比

    前言 伟人曾经说过 没有调查就没有发言权 好像是伟人说的 不管谁说的 这句话是正确的 有些东西看着简单 张口就来 但很有可能是错的 我个人的经验是 aop 过滤器 拦截器的实现方式很简单 一学就会 不用就忘 忘了再学 学了再忘 如此循环内耗
  • springboot整合请求分析

    文章目录 请求 初识restTemplate GET请求 1 传参替换使用 来表示坑位 根据实际的传参顺序来填充 如下 2 使用 xx 来传递参数时 这个xx对应的就是map中的key 3 当响应头是application json cha
  • 计算机单位及单位转换

    计算机单位及转换 一 位 计算机中表示信息的最小单位 表示一位二进制信息 以b表示 bit 0 1 一个字节8位 字节 计算机中处理信息的最小单位 以八位二进制信息 以B表示 1B 8b 一个整数4个字节 字长 一个字所包含二进制输的位数
  • 刷脸支付逐渐普及刷脸项目也逐渐火热起来

    科技的发展总是朝着更智能化的方向前进 在此基础上 人脸识别技术因其生物支付特征明显 和特征唯一性获得了众多项目的青睐 将这一技术迅速线下落地产业化 随着人脸识别技术的逐渐成熟 刷脸支付应运而生 刷脸支付代理项目也逐渐火热起来 我们体验了刷脸
  • 认识 MySQL

    文章目录 1 前言 2 数据库 3 MySQL 1 前言 在当今信息时代 数据被认为是最宝贵的资源之一 因为它可以帮助我们洞察趋势 做出决策 构建智能系统 并推动创新 而数据库技术的崛起 尤其是MySQL数据库 为我们提供了强大的工具来存储
  • vue中实现删除校验-iview的气泡提示

    前言 很多时候我们担心删除会出现误删的情况 这样就需要对删除进行二次校验 确定是否继续删除 效果图 实现代码
  • Type Incompatible operand types String and int

    今天eclipse包了一个错误 意思就是Description Resource Path Location Type Incompatible operand types String an 但是昨天还没有错误为什么那 最后找了好久发现不
  • 区块链之PBFT算法

    在公有链中用的最多的是pow算法和pos算法 这些算法都是参与者的利益直接相关 通过利益来制约节点诚实的工作 解决分布式系统中的拜占庭问题 拜占庭容错算法是一种状态机副本复制算法 通过节点间的多轮消息传递 网络内的所有诚实节点就可以达成一致
  • jQuery实现省市二级联动

    主要实现流程 步骤分析 1 设置加载页面函数事件 2 在里面获取select的id并且设置下拉事件并且绑定函数 3 定义2维数组存放相应的城市 4 遍历2维数组省份 并且使用if判断 点击时的this value值 如果值与省份 二位数组下
  • 深入理解 == 与 equals 区别

    深入理解 与 equals 区别 这是一个老生常谈的问题了 也是在面试过程中常见的问题之一 网上所提供的常用回答是 equals比较值 比较值和引用 对java源码有了一定了解了之后回头再思考这个问题并不是那么的简单单一 java中的二元运
  • springboot的配置注入

    文章目录 第一种 使用 Value 第二种 使用 ConfigurationProperties springboot配置注入 数据绑定 有两种方式 第一种 使用 Value 首先 在application yml中定义自己的数据 appl
  • 蓝桥杯基础试题汇总(Python)看这一篇就够了

    目录 蓝桥杯习题汇总 1 试题 基础练习 A B问题 2 数列问题 3 试题 基础练习 十六进制转八进制 4 试题 基础练习 十六进制转十进制 5 试题 基础练习 十进制转十六进制 6 试题 基础练习 序列求和 7 试题 基础练习 圆的面积
  • 浅谈数据同步实现rsync+inotify

    浅谈数据同步实现rsync inotify 数据的实时同步介绍 数据的实时同步实现 inotify inotify的介绍 实现inotify软件 inotify rsync使用方式 实现inotify rsync 1 rsync基本概述 2

随机推荐

  • ubuntu安装deb包

    ubuntu安装deb包 安装deb包 sudo dpkg i 包名 安装deb包后 可能会出现依赖关系而不能正常安装软件 这个时候先更新下源然后解决依赖关系后重装即可 sudo apt get update 更新 sudo apt get
  • 教程网站 汇总:Linux 、 C /C++ 、HTML、CSS

    C 语言教程 菜鸟教程 https www runoob com cprogramming c tutorial html C 教程 菜鸟教程 https www runoob com cplusplus cpp tutorial html
  • 安装apache后无法访问localhost但可以访问127.0.0.1的解决方法

    localhost与127 0 0 1的概念和工作原理之不同 概念 localhost 也叫local 正确的解释是 本地服务器 127 0 0 1 在windows等系统的正确解释是 本机地址 本机服务器 工作原理 localhot 是不
  • VS2019的常见错误和调试功能

    目录 一 VS2019常见问题 1 scanf问题 2 如何在当前页面下再创建新项目和创建多项目后无法运行当前项目的问题 二 VS2019的调试功能 不打断点 三 VS2019的调试功能 打断点 四 总结 一 VS2019常见问题 1 sc
  • 爬虫实战爬取豆瓣电影Top250榜单电影

    爬虫实战爬取豆瓣电影Top250榜单电影 实战内容 直接上代码 重要地方有注释 from bs4 import BeautifulSoup import re import urllib request urllib error impor
  • Postman + Pre-resuestScript:预请求脚本发送GET请求

    通过预执行脚本 Pre request Script 发送GET请求 一 效果演示 二 控制台 Console 打印响应结果 代码注释详解 pm sendRequest 是发送一个请求 function 中的 err 表示请求返回的错误信息
  • Node的Buffer对象和fs模块

    一 Node的模块化管理 1 模块化 node应用程序由模块组成 遵循的是CommonJS模块规范 使用模块管理的好处是隔离模块的作用域 避免出现命名冲突 2 什么是CommonJS 是一套代码的规范 构建一个在浏览器之外的JavaScri
  • 报错:ImportError: rocketmq dynamic library not found解决方法

    目录 一 ImportError rocketmq dynamic library not found 二 OSError librocketmq so cannot open shared object file No such file
  • Shell脚本的通配符和特殊符号

    通配符 符号 意义 0到无穷个任意字符 一个任意字符 如 abcd 表示a b c d中任意一个 在编码顺序内的所有字符 如 0 9 表示0到9间的数字 反向选择 如 abc 表示非a b c的其它字符 特殊符号 符号 内容 管线 分割两个
  • 项目质量管理__七种基本质量工具__老七工具和新七工具

    七种基本质量工具 用于在PDCA Plan Do Check Action 循环的框架内解决与质量相关的问题 1 老七工具 包括因果图 流程图 核查表 帕累托图 直方图 控制图和散点图 因果图 又称鱼骨图或石川馨图 流程图 也称过程图 核查
  • 热部署系统实现

    热部署 是指在不关闭或重启服务的情况下 更新Java类文件或配置文件 实现修改内容生效 通过热部署 可提高开发效率 节省程序打包重启的时间 同时 可实现生产环境中需要不停机或重启的服务的升级 在大厂的核心中台 订单服务 商品服务往往有几千台
  • @Cacheable缓存相关使用总结

    本篇文章主要讲解Spring当中 Cacheable缓存相关使用 在实际项目开发中 有些数据是变更频率比较低 但是查询频率比较高的 此时为了提升系统性能 可以使用缓存的机制实现 避免每次从数据库获取 第一步 使用 EnableCaching
  • 【LeetCode】贪心

    贪心 55 跳跃游戏 55 跳跃游戏 55 跳跃游戏 给定一个非负整数数组 nums 你最初位于数组的 第一个下标 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个下标 示例 1 输入 nums 2 3 1 1
  • rsync实时同步

    rsync实时同步 文章目录 rsync实时同步 toc 一 简介 二 特性 三 常用选项 四 部署 1 目标服务器操作 2 源服务器操作 3 设置脚本开机自启 一 简介 rsync是Linux系统下的数据镜像备份工具 从字面意思上 rsy
  • linux 中移动文件_如何在Linux中移动文件

    linux 中移动文件 在Linux中移动文件看似比较简单 但是可用的选项却比大多数人想象的要多 本文向初学者讲授如何在GUI和命令行中移动文件 同时还解释了幕后实际发生的情况 并介绍了许多经验丰富的用户很少探索的命令行选项 搬什么 在研究
  • STM32CubeMX基础例程(小熊派):02.按键轮询检测

    1 准备开发板 这里我选用了一块网红开发板 小熊派 这款板子的人气比较高 还是全国大学生物联网设计竞赛 华为杯 的华为竞赛开发板 我个人也比较喜欢用这款板子 这款板子在放在纸箱吃灰半年之后 被我重新拿了起来 并想借此写博客的机会 整理一下自
  • TensorFlow 的基本概念和使用场景

    TensorFlow 是一个开源的 跨平台的机器学习框架 由 Google 于 2015 年发布 它提供了一套完整的工具链 可以帮助开发者快速构建和训练各种类型的机器学习模型 TensorFlow 的核心概念是张量 Tensor 和计算图
  • 详解代码覆盖率及各语言主流工具

    更多内容关注微信公众号 fullstack888 代码覆盖 英语 Code coverage 是软件测试中的一种度量 描述程序中源代码被测试的比例和程度 所得比例称为代码覆盖率 在做单元测试时 代码覆盖率常常被拿来作为衡量测试好坏的指标 甚
  • 微策略笔试题

    1 堆栈的区别 优劣 以及栈最多层次 一 预备知识 程序的内存分配 一个由C C 编译的程序占用的内存分为以下几个部分 1 栈区 stack 由编译器自动分配释放 存放函数的参数值 局部变量的值等 其 操作方式类似于数据结构中的栈 2 堆区
  • mysql 批量修改自增数据_SqlServer Mysql数据库修改自增列的值及相应问题的解决方案...

    SQL Server 平台修改自增列值 由于之前处理过sql server数据库的迁移工作 尝试过其自增列值的变更 但是通过SQL 语句修改自增列值 是严格不允许的 直接报错 无法更新标识列 自增列名称 sql server我测试是2008