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
  • 相关阅读:
    读jQuery之十六(事件代理)
    双向列表(JS)
    单向链表(JS)
    子程序(过程、函数、方法)
    jQuery(1.6.3) 中css方法对浮动的实现缺陷
    操作class属性的新APIclassList
    ajax后退解决方案(四)
    设置元素浮动的几种方式
    各浏览器中使用getAttribute获取checkbox/radio的checked值不同
    IE6/7不支持hashchange事件
  • 原文地址:https://www.cnblogs.com/wghao/p/3818089.html
Copyright © 2011-2022 走看看