SqlServer Mysql数据库修改自增列的值及相应问题的解决方案是怎样的

技术SqlServer Mysql数据库修改自增列的值及相应问题的解决方案是怎样的今天就跟大家聊聊有关SqlServer Mysql数据库修改自增列的值及相应问题的解决方案是怎样的,可能很多人都不太了解,为了让大家更加了

今天跟大家聊聊如何修改SqlServer Mysql数据库的自加值,以及相应问题的解决方法。可能很多人不太了解。为了让大家更好的了解,边肖为大家总结了以下内容。希望大家能从这篇文章中有所收获。

SQL Server 平台修改自增列值

我之前尝试过更改sql server数据库的自增量值,但是严禁用sql语句修改自增量值,会直接报错(标识列‘自增量列名’无法更新)。我在2008年、2012年和2014年测试的Sql server,都是不允许更改自增列值的。我认为SQL Server 2005的环境不允许更改字段列值。

如果必须在SQL Server平台上修改自增列值,需要手动添加自增列属性,然后修改列值,修改成功后再手动添加自增列属性。如果构建环境是修改和自添加的,建议在空闲时间(零点以后,平台或网站用户少的时期)处理这类问题。如果数据量大,多个表相关,那就通过T-SQL进行更改。这种方法最大的缺点是手工取消和添加自增属性。

还有一个方法。首先将需要修改的数据组织成T-SQL插入脚本,然后删除这批需要修改的数据,这是通过显示插入的数据来实现的。这种方法适用于需要大量修改的单表记录,而且灵活。

一个更简单的方法,就是如果只有几项,让操作人员重新发布信息,删除之前的数据。

还有就是通过网上修改的T-SQL语句取消自增属性。我没有通过SQL Server 2005的环境测试,对应的T-SQL代码如下:

exec sys . sp _ config @ config name=' allowupdates ',-varchar(35)@ config value=1;-intexecsys . sp _ config @ config name=' showadvancedoptions ',-varchar(35)@ config value=1;-IntraconfigureWithoverride;goupdatesys . syscolumssetcolstat=1 where ID=OBJECT _ ID(N ' primarykeyandiidentyupdatetestdatatable ',' U ')和name=N ' ID ' and lstat=1;updatesys . columns tis _ identity=0 where OBJECT _ ID=OBJECT _ ID(N ' primarykeyandientityupdatetestdatatable ',' U ')和name=N ' ID ' andis _ identity=1;实施后的结果如下:

MySQL 平台修改自增列值

mysql平台修改自增值比较麻烦。mysql中有一个自增栏。如果其引擎是myisam,则该列可以是独立的主键列或复合主键列,也就是说,它必须是主键的关联列。如果其引擎是innodb,则该列必须是独立的主键列。绝对不可能直接修改两个自增列值的变化。

我的方法是将两个自增量值(如1和2)分成以下三步:1。首先,将自增量值1改为0;2.将自增量值2更改为1;3.将自增量值0更改为2;

下面两个数据引擎的测试环境是mysql 5.6。

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

droppetableifexistsidentity _ datatable;create table identity _ datatable(IDENTNOtNullAutO _ INVENTURE,namevarchar(10)notnull,primarykey(id))engine=innodb,defaultcharset=utf8插入identity_datatable(id,name)值(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_datatableset id = 0where id = 1;update identity_datatableset id = 1where id = 2;update identity_datatableset id = 2where id = 0;select *from identity_datatable;

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

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

注意:

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_myisamset id = 0;where id = 1;select *from autoincremenet_datatable_myisam;update autoincremenet_datatable_myisamset id = 1;where id = 2;select *from autoincremenet_datatable_myisam;update autoincremenet_datatable_myisamset id = 2;where id = 0;select *from autoincremenet_datatable_myisam;

注意:

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

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

看完上述内容,你们对SqlServer Mysql数据库修改自增列的值及相应问题的解决方案是怎样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/127856.html

(0)

相关推荐

  • 计算机网络面试题(一)

    技术计算机网络面试题(一) 计算机网络面试题(一)网络分层
    1、说说OSI 七层、TCP/IP 四层的关系和区别
    OSI 七层从下往上依次是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

    礼包 2021年12月14日
  • MYSQL中基础知识有哪些

    技术MYSQL中基础知识有哪些这篇文章主要介绍了MYSQL中基础知识有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、基础概念与基础命令1)基础概念

    攻略 2021年10月31日
  • C++ I/O 类

    技术C++ I/O 类 C++ I/O 类I/O 类
    ?
    C++ 不直接处理输入输出, 而是通过一组定义在标准库中的类型来处理 I/O . 这些类型支持从设备读取数据, 向设备写入数据的 I/O 操作,

    礼包 2021年11月5日
  • 怎么进行一键部署linux服务器

    技术怎么进行一键部署linux服务器这篇文章将为大家详细讲解有关怎么进行一键部署linux服务器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。今天推荐的是一款一键部署li

    攻略 2021年10月21日
  • WPF设置列内容居左、中、右

    技术WPF设置列内容居左、中、右 WPF设置列内容居左、中、右Style内容Style x:Key="contentLeftStyle" TargetType="{x:Type TextBlock}"S

    礼包 2021年12月18日
  • http2的真正性能到底如何

    技术http2的真正性能到底如何http2的真正性能到底如何,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、研究目的http2的概念提出已经有相当长一

    攻略 2021年11月16日