PowerDesigner生成MS SQL foreign 的问题

简单地说,就是从CDM生成PDM的时候,releationship约束无效,不能生成外键约束的代码。生成基于oracle的pdm没问题,ms sql server有问题
这里的是sql server 2005
Power Designer是15.0.0.2613 
看起來是PD的bug,解決辦法是在PDM畫面中點選Model->References... 
會跳出一個視窗裡頭有這個PDM的所有Reference的相關資訊,最後有個欄位叫Implementation可以直接設定成Declarative就好了。
補充一下,如果Implementaion無法強制設成Declarative,可將Current DBMS設成Sql Server 2000即可。設定完後再改回來Sql server 2005/2008即可。 不知道甚麼原因導致Sql 2005/2008的DBMS會強制Reference Integrity設成用trigger的方式。
当从CDM转到PDM(MS SQL Server)的时候,在CDM中的ReleationShip不能在CDM的foreign生成有效代码,References的Privew标签显示内容为: 
-- The preview is empty because of the setting. 
-- Check the generation option. 
查看integrity标签,implementation显示为trigger,update/delete constraint分别为restrict,改变为update/delete constraint为none,并且改implementation为declarative后,preview中代码显示正常,如下: 
if exists (select 1 
  from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') 
  where r.fkeyid = object_id('meb_FriendRequest') and o.name = 'FK_MEB_FRIE_RS_MEMBER_MEB_MEMB') 
alter table meb_FriendRequest 
  drop constraint FK_MEB_FRIE_RS_MEMBER_MEB_MEMB 
go 
alter table meb_FriendRequest 
  add constraint FK_MEB_FRIE_RS_MEMBER_MEB_MEMB foreign key (Member_ID) 
      references meb_Member (Member_ID) 
go 
根据提示,在创建pdm的时候查看选项,发现for sql server与for oracle内容不一样。 实验步骤: 
1.建立一个cdm 
2.建立两个实体,分别是parent和child,并且在这两个实体中间建立一对多的relationship。 
3.将cdm生成for oracle 10g的pdm,查看child表的外键约束,在标签preview中可以看到创建外键约束的代码 
4.将cdm生成for ms sql 2005的pdm, ......

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值