用PowerDesigner制作数据库升级脚本

很多人使用PD的时候就问有没有制作自动升级脚本的功能。其实是有的。

操作原理:
1、保存原来的版本,另存为apm的文件,生成一个Archive Model。
2、生成升级脚本,需要选择原来的版本

操作步骤:
1、打开PDM文件,选择Save as .... 另存为,在弹出的窗口中选择apm的文件类型,输入文件名保存即可。
2、修改相关的数据模型的内容,然后保存。
3、选择DataBase菜单中的modify database... 菜单
4、在弹出的窗口中设置升级脚本的目录及文件名后,在synchronization页框中的obtains database schema中选择using an archive model: 选择原先保存的apm文件。后面的其它页框设置与生成脚本的类似。

5、点一下确定,PD就会自动生成数据库的对比信息,弹出一个database synchronization窗口,这里这个窗口里列出了所有的差异信息,你可以选择需要升级的内容。点ok就可以看到升级脚本了。



生成脚本分析:
总体来讲还是很智能化的一个工具。
比如增加一个列,生成就的脚本就很简单。脚本如下:
alter table SY_MsgSend add Column_8 CHAR(10)
/

在删除列的时候就充分体现出智能化的升级脚本,如下所示,做了一个删除列的操作会生成一系列的升级脚本:

/*==============================================================*/
/* Database name:  Database                                     */
/* DBMS name:      ORACLE Version 9i                            */
/* Created on:     2007-9-6 11:12:26                            */
/*==============================================================*/


alter table SY_MsgReceiver
   drop constraint FK_SY_MSGRE_SY_MSGREC_SY_MSGSE
/


drop table tmp_SY_MsgSend cascade constraints
/


/*==============================================================*/
/* Table: tmp_SY_MsgSend                                        */
/*==============================================================*/


create table tmp_SY_MsgSend  (
   MS_ID                NUMBER(10)                       not null,
   MS_Content           VARCHAR2(4000),
   MS_SendTime          DATE,
   MS_Type              VARCHAR2(4),
   MS_Sender            NUMBER(8),
   MS_Status            NUMBER(1)                      default 1  not null,
   MS_MsgSource         NUMBER(2)                      default 1  not null,
   Column_8             CHAR(10)
)
/

insert into tmp_SY_MsgSend (MS_ID, MS_Content, MS_SendTime, MS_Type, MS_Sender, MS_Status, MS_MsgSource)
select MS_ID, MS_Content, MS_SendTime, MS_Type, MS_Sender, MS_Status, MS_MsgSource
from SY_MsgSend
/


drop table SY_MsgSend cascade constraints
/


/*==============================================================*/
/* Table: SY_MsgSend                                            */
/*==============================================================*/


create table SY_MsgSend  (
   MS_ID                NUMBER(10)                       not null,
   MS_Content           VARCHAR2(4000),
   MS_SendTime          DATE,
   MS_Type              VARCHAR2(4),
   MS_Sender            NUMBER(8),
   MS_Status            NUMBER(1)                      default 1  not null,
   MS_MsgSource         NUMBER(2)                      default 1  not null,
   constraint PK_SY_MSGSEND primary key (MS_ID)
)
tablespace TBS_EOFFICE
/


insert into SY_MsgSend (MS_ID, MS_Content, MS_SendTime, MS_Type, MS_Sender, MS_Status, MS_MsgSource)
select MS_ID, MS_Content, MS_SendTime, MS_Type, MS_Sender, MS_Status, MS_MsgSource
from tmp_SY_MsgSend
/


/*==============================================================*/
/* Index: Index_47                                              */
/*==============================================================*/
create index Index_47 on SY_MsgSend (
   MS_Sender ASC
)
tablespace TBS_IDX_Eoffice
/


alter table SY_MsgReceiver
   add constraint FK_SY_MSGRE_SY_MSGREC_SY_MSGSE foreign key (MS_ID)
      references SY_MsgSend (MS_ID)
      on delete cascade
/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值