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
  • 相关阅读:
    http2
    JMH java基准测试
    java 线程池
    线程中断
    mybatis
    JDBC 线程安全 数据库连接池
    mysql string 列类型
    剖析nsq消息队列目录
    go微服务框架go-micro深度学习-目录
    详说tcp粘包和半包
  • 原文地址:https://www.cnblogs.com/wghao/p/3818089.html
Copyright © 2011-2022 走看看