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
  • 相关阅读:
    人人都有数字替身的时代马上到来
    教你如何在linux下查看服务是否已经启动或者关闭
    提前了解2019年物联网发展的六大趋势
    本科理工男如何学习Linux
    linux常见命令ps的应用
    useradd 命令的常见用法
    简单聊聊Linux学习经历
    什么是公网IP、内网IP和NAT转换?
    远程获得的有趣的linux命令
    js练习题之查找数组中的位子
  • 原文地址:https://www.cnblogs.com/wghao/p/3818089.html
Copyright © 2011-2022 走看看