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
  • 相关阅读:
    为什么 JVM 不用 JIT 全程编译?
    JVM Internals
    JIT与JVM的三种执行模式:解释模式、编译模式、混合模式
    Dart编译技术与平台
    Dart 库预览
    使用VSCode开发Flutter
    环境变量
    使用Homebrew管理你的mac开发包
    brew 又叫Homebrew,是Mac OSX上的软件包管理工具
    使用async/await消除callback hell
  • 原文地址:https://www.cnblogs.com/wghao/p/3818089.html
Copyright © 2011-2022 走看看