zoukankan      html  css  js  c++  java
  • PowerDesigner-VBSrcipt-自动设置主键,外键名等(SQL Server)

    在PowerDesigner中的设计SQL Server 数据表时,要求通过vbScript脚本实现下面的功能:

    主键:pk_TableName

    外键:fk_TableName_ForeignKeyColumnList

    当字段作为主键,而且类型为smallint,int,bigint,那么要设置Identity =true.

    当字段作为主键,而且类型为uniqueidentifier,那么要设置默认值为newid(),而且设置扩展属性rowguidcol.

    
    
    Option Explicit
    ValidationMode = True
    InteractiveMode = im_Batch
    Dim mdl ' the current model
    Set mdl = ActiveModel
    If (mdl Is Nothing) Then
       MsgBox "There is no current Model"
    ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
       MsgBox "The current model is not an Physical Data model."
    Else
       ProcessFolder mdl
    End If
    
    Private sub ProcessFolder(folder)
        'Tables
       Dim tab
       for each tab in folder.tables
           
           dim col
           for each col in tab.columns 
                
                '自動設置Identity
                if col.primary =true and (col.datatype ="smallint" or col.datatype = "int"  or col.datatype = "bigint") then
                   col.identity=true
                   
                '自動設置ROWGUIDCOL   
                elseif col.primary=true and col.datatype="uniqueidentifier" then
                   col.DefaultValueDisplayed="newid()"   
                   col.SetExtendedAttributeText "ExtRowGUIDCol",true
                end if
                
           next    
           
          '自動設置主鍵
          dim ky
          for each ky in tab.Keys
                if ky.primary =true then
                   ky.Name="pk_"+tab.Name
                   ky.Code=ky.Name
                   ky.ConstraintName=ky.Name
                   ky.Clustered=true
                end if
          next
                           
       next
       
       '自動設置外鍵
       dim ref
       for each ref in folder.References
          ref.name="fk_"+ref.ChildTable.Name +"_"+ref.ForeignKeyColumnList
          ref.Code=ref.Name
          ref.ForeignKeyConstraintName=ref.name
       next
    
       
    
       ' go into the sub-packages
       Dim f ' running folder
       For Each f In folder.Packages
          if not f.IsShortcut then
             ProcessFolder f
          end if
       Next
    end sub
  • 相关阅读:
    HTML入门学习
    C#结课报告
    Xaml 页面布局学习
    cocos2dx使用pthread注意事项[zt]
    张艾迪(创始人):期待改变世界的力量
    张艾迪(创始人):年少创业与干净的我
    张艾迪(创始人):工作的时候
    张艾迪(创始人):出现在世界224C之前的这些时间
    张艾迪(创始人):世界前三大互联网公司
    张艾迪(创始人):世界前三大互联网巨头公司
  • 原文地址:https://www.cnblogs.com/wghao/p/3818089.html
Copyright © 2011-2022 走看看