现在的位置: 首页 > 数据库 > 正文

常见数据库数据升级策略

2014年08月23日 数据库 ⁄ 共 2297字 暂无评论 ⁄ 阅读 1,531 次

一、新增列

1、修改表

【升级包】

在create table表中使用alter语句新增列,使用comments语句给该列添加备注,在drop table表中drop该新增列;

【全量包】

在create table表中新增该列及comments;

2、新增表

【升级包】

在create table表中直接新增该列及comments;

【全量包】

在create table表中直接新增该列及comments;

 

二、修改列名

1、修改表

【升级包】

Oracle:在create table表中使用alter+renamecolumn语句,注意,若该列有约束条件则需要在修改列名后drop旧约束(若有主外键关系要有cascade关键字),并新建约束;

DB2:alter增加新列 > 将旧列内容update到新列 > 删除旧列,注意,给新列加comments,若该列有约束,同样需要处理约束;

【全量包】

在create table直接修改该列列名,注意,同时还要修改comments中列名!

2、新增表

【升级包】

在create table直接修改该列列名,注意,同时还要修改comments中列名!

【全量包】

在create table直接修改该列列名,注意,同时还要修改comments中列名!

 

三、修改数据大小

1、修改表中修改列

【升级包】

增大数据大小:

Oracle:在create table中添加“altertable 表名modify 字段名数据类型”语句;

DB2:在create table中添加“altertable 表名 alter column 字段名set data type 数据类型”语句;

缩减数据大小:

Oracle:在create table中新增bak临时列并指定缩减后的数据类型大小 > 使用update备份原有类数据内容 > 使用drop删除旧列 > 使用alter+rename将临时列名改为原列名 > 给列添加注释 > 若该列上有约束条件则使用alter语句添加约束;

DB2:在create table中新增bak临时列> 使用update备份数据 > 使用drop删除旧列 > 新增列指定列名为原列名且指定缩减后的数据大小 > 使用update添加数据 > 删除临时列 > 给列添加注释 > 若该列上有约束条件则使用alter语句添加约束;

或新建临时列 > 使用update备份数据 > 使用update清空旧列内容(若有约束先删除约束) > 修改旧列数据类型 > 使用update填入数据 > 删除临时列 > 若该列有约束则添加该约束

或新建临时表并指定缩减后的数据类型 > 备份旧表所有数据并commit > 删除旧表 > 重命名新表为原表名 > 若原表有约束则添加约束条件

【全量包】

在create table直接修改该列数据类型大小;

2、新增表或修改表中新增列

【升级包】

在create table表建表语句或alter语句中直接修改该列数据类型大小;

【全量包】

在create table表中直接修改该列数据类型大小;

 

四、修改数据类型

1、修改表中修改列

【升级包】

Oracle:在create table中新增bak临时列并指定缩减后的数据类型 > 使用update备份原有类数据内容 > 使用drop删除旧列 > 使用alter+rename将临时列名改为原列名 > 给列添加注释 > 若该列上有约束条件则使用alter语句添加约束;

DB2:在create table中新增bak临时列> 使用update备份数据 > 使用drop删除旧列 > 新增列指定列名为原列名且指定数据类型 > 使用update添加数据 > 删除临时列 > 给列添加注释 > 若该列上有约束条件则使用alter语句添加约束;

或新建临时列 > 使用update备份数据 > 使用update清空旧列内容(若有约束先删除约束) > 修改旧列数据类型 > 使用update填入数据 > 删除临时列 > 若该列有约束则添加该约束

或新建临时表并指定数据类型 > 备份旧表所有数据并commit > 删除旧表 > 重命名新表为原表名 > 若原表有约束则添加约束条件

【全量包】

在create table直接修改该列数据类型;

2、新增表或修改表中新增列

【升级包】

在create table表建表语句或alter语句中直接修改该列数据类型大小;

【全量包】

在create table表中直接修改该列数据类型大小;

五、修改约束

1.添加、删除主键

Oracle:

alter table 表名addconstraint 约束名primary key (字段);

alter table 表名 dropprimary key cascade;

DB2(增加主键之前必须先添加非空约束):

alter table 表名 alterCOLUMN 字段名 set  NOT NULL;

alter table 表名

add constraint 约束名 primarykey (字段名);

alter table 表名 dropprimary key;

alter table 表名  alter COLUMN  字段名  drop NOT NULL;

 

2.增加非空约束

Oracle:

alter table 表名 modify (字段名  NOT NULL);

DB2:

alter table 表名 alterCOLUMN 字段名 set NOT NULL;

alter table 表名  alter COLUMN  字段名  drop NOT NULL;

3.添加,删除默认值

Oracle:

alter table 表名 modify 字段名 default 默认值;

alter table 表名 modify 字段名 defaultnull;

六、数据升级

update和default,只需要在init文件中修改;

insert

新增表时仅需要在init文件中添加即可;

修改表时需要将数据进行恢复(delete),否则会重复插入数据;

» 声明:本站文章源于个人经验总结或书籍、互联网转载,内容仅用于个人学习,请勿转载,否则后果自负!

给我留言

留言无头像?