加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

自动配置Identity属性的代码(PowerDesigner剧本)

发布时间:2018-08-18 11:47:58 所属栏目:电商 来源:站长网
导读:'***************************************************************************** '文件:SetIdentity.vbs '版本:1.0 '版权:floodzhu (floodzhu@hotmail.com),2004.12.31 '成果:遍历物理模子中的全部表,把是主键但不是外键的字段配置为Identity,适
'*****************************************************************************
'文件:SetIdentity.vbs
'版本:1.0
'版权:floodzhu (floodzhu@hotmail.com),2004.12.31
'成果:遍历物理模子中的全部表,把是主键但不是外键的字段配置为Identity,合用于
'      物理模子为MS Sql Server的范例。
'用法:打开物理模子,运行本剧本(Ctrl+Shift+X)
'备注:我有两个风俗,一个是把全部表的主键都界说为自增添的int范例,另一个是界说
'      一个Domain叫ID,在计划观念模子时把全部的PrimaryKey字段的Domain配置为ID
'      范例。
'
'      假如我举办了上面的配置,则在转化为物理模子时必要手工配置Identity,
'      最笨的要领是一个表一个表举办配置,最简朴的要领是在物理模子中直接对Domain
'      举办配置。对Domain举办配置有一个小弱点,就是假如该字段不是主键也不是生
'      成的外键,而是一个一样平常字段,譬喻暗示树状布局的PID,则它也会被配置为
'      Identity,不外因为这种字段较量少,并且在天生数据库时会产生错误可以提示
'      你举办更正,以是可以轻松过关而不至于潜匿错误,以是是一种好要领。
'
'      用下面的代码可以给你第三种选择,而不会产生任何错误。
'*****************************************************************************
dim model 'current model
set model = ActiveModel

If (model Is Nothing) Then
   MsgBox "There is no current Model"
ElseIf Not model.IsKindOf(PdPDM.cls_Model) Then
   MsgBox "The current model is not an Physical Data model."
Else
   ProcessTables model
End If

'*****************************************************************************
'函数:ProcessTables
'成果:递归遍历全部的表
'*****************************************************************************
sub ProcessTables(folder)
   '处理赏罚模子中的表
   dim table
   for each table in folder.tables
      if not table.IsShortCut then
         ProcessTable table
      end if
   next
  
   '对子目次举办递归
   dim subFolder
   for each subFolder in folder.Packages
      ProcessTables subFolder
   next
end sub

'*****************************************************************************
'函数:ProcessTable
'成果:遍历指定table的全部字段,假如该字段是主键但不是外键,则配置为Identity
'*****************************************************************************
sub ProcessTable(table)
   dim col
   for each col in table.Columns
      '对付是主键且不是外键的字段配置为Identity(自增添范例)
      if col.Primary and not col.ForeignKey then
         col.Identity = true
      end if
   next
end sub

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读