如何解决自增列赋值的问题

现象描述

我们有时候会遇到自增列赋值的问题,尤其是当之前使用的是Mysql 时,在往达梦或者其他数据库迁移后,如果目的数据库无法进行自增列赋值,之前的应用程序怎么办?

 

应用中可能遇到报错:不可修改自增列

处理方法

修改表结构,不再使用自增列,而是使用普通列,同事设置默认值为序列。

 

原因:

1.        自增列赋值本身是一个mysql 不严谨的用法,自增列本身应该有系统管理,不应该可以赋值

2.        虽然在其他数据库,如达梦数据库上,可以通过相关开关来开启自增列辅助的功能,但是这个功能默认是关闭的,也应该是关闭的

3.        那么在之前的Mysql 应用场景中,我们只需要通过普通列+ 序列默认值的方式,就可以解决该问题。

 

具体例子如下:

 

Mysql 建表如下:

create table test3

(

 id int auto_increment not null,

 str varchar(2),

 key(id)

);

 

DM 应该先手动迁移该表结构,在迁移数据:

create SEQUENCE seq_auto_increment_test3 INCREMENT by 1 START WITH 1 ;

create table test3

(

 id int default seq_auto_increment_test3.nextval primary key,

 str varchar(2)

);

 

这样变更的表结构,“自增列”的赋值属性,包括其他用法,是基本一致的,可以绕过前述问题,保证应用正常。

    原文作者:yanhengdoudou
    原文地址: http://blog.itpub.net/69949798/viewspace-2660879/
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞