PowerDesigner设置所有int主键自增脚本

'*****************************************************************************
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 and instr(lcase(col.datatype),"integer") > 0 then
        col.Identity = true
     end if
  next
end sub

保存为文件A_SetIdentity.vbs放到安装目录下的vb scripts文件夹

powerdesigner的pdm中ctrl+shift+x 打开运行脚本对话框 菜单栏中选择打开文件 找到A_Setidentity.vbs执行

70EF4733-6445-4BAC-9F92-AD8A086A5398|From:http://www.cnblogs.com/xuejianxiyang/p/8926694.html

扫描二维码关注公众号,回复: 55479 查看本文章

猜你喜欢

转载自www.cnblogs.com/xuejianxiyang/p/8926694.html