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)

相关推荐

  • C++ 小记

    技术C++ 小记 C++ 小记新学了一下类相关的东西。C++ 小记新学了一下类相关的东西。class
    这东西叫类,看起来和 int,double 这些类型是一样的,int 存的是一个数,class 里面

    礼包 2021年11月12日
  • C#操作Excel实现的实例分析

    技术C#操作Excel实现的实例分析C#操作Excel实现的实例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#操作Excel是怎么样执行的呢?我们在

    攻略 2021年11月24日
  • 青年的年龄,青年人一般指的是几岁到几岁

    技术青年的年龄,青年人一般指的是几岁到几岁青年人一般是20-44周岁青年的年龄。 【年龄段划分】
    中国的年龄分段:   
    1、童年。   
    0岁—6岁(周岁,下同) 
    (1)婴儿期0-3周月;
    (2)小儿期4周

    生活 2021年10月22日
  • flask模板网页怎么引用文件(flask默认使用的模板是)

    技术Flask模版如何使用这篇文章主要介绍了Flask模版如何使用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. Flask的模版引擎是什么?flas

    攻略 2021年12月24日
  • 怎么用Python在520俘获女神芳心

    技术怎么用Python在520俘获女神芳心这篇文章主要讲解了“怎么用Python在520俘获女神芳心”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python在52

    攻略 2021年11月2日
  • Java两种主要异常的差别是什么

    技术Java两种主要异常的差别是什么本篇文章给大家分享的是有关Java两种主要异常的差别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java提供了两

    攻略 2021年10月23日