在PowerDesigner LDM / PDM中自动重命名列

时间:2010-02-24 12:45:52

标签: database-design rename powerdesigner

我想根据Primary复选框的状态重命名PowerDesigner LDM / PDM中的列。更具体地说,如果选中Primary,我希望将列从“oldname”重命名为“id_oldname”。

我认为可以使用自定义检查/自动修复脚本,例如“MSSQLSRV2008 :: Profile \ Column \ Custom Checks \ Identity Seed and Increment validity”中的脚本,但我真的不是VBScript专家:)

有没有一种简单的方法可以在PowerDesigner 15中实现这一目标?

3 个答案:

答案 0 :(得分:1)

解决方案非常简单。不幸的是,它并不完美,因为PowerDesigner在某些情况下无法执行事件处理程序(原因不明)。下面的小vbscript应该能够处理它。将创建扩展模型定义文件并将其附加到项目。该脚本是表元类的验证事件处理程序(尽管它更像是自动修复而不是验证)。

Function %Validate%(obj, ByRef message) 
   ' Implement your object validation rule on <parent> here 
   ' and return True in case of success, False otherwise with a message 
   dim col    
   for each col in obj.columns      
      if col.Primary = true then 
         if left(col.name,3) <> "id_" then 
            With col 
               .name = "id_" & .name 
               .SetNameAndCode .Name, "", True 
            End With 
         end if 
      else 
         if left(col.name,3) = "id_" then 
            with col 
               .name = right(.name, len(.name)-3) 
               .SetNameAndCode .Name, "", True 
            end with 
         end if 
      end if 
   next 
   %Validate% = True
End Function 

归功于提供原始代码的Richard Kier。谢谢,理查德。

答案 1 :(得分:0)

可以编写VBScript来搜索对象模型,查找作为主键成员的列并重命名它们。

或者:

  • 可以显示列的列表    (右键单击包或    模型,列表 - &gt;专栏)

  • 按control-U(或点击    提出漏斗和铅笔图标)    自定义列和过滤器。

    • 在“列标题”列中找到“主键”条目。
    • 在Filter Expression中,将表达式设置为True。
    • 检查U列中的主键条目,并确保没有 其他行已经检查过。
    • 按“应用”。

您现在应该看到属于键的所有列。您可以类似地使用通配符过滤不合规的名称。您也可以选择多行并同时重命名它们。

答案 2 :(得分:0)

有一个更简单的方法。

  1. 转到数据库 - 生成数据库 - 保存生成的sql文件。
  2. 使用文本编辑器重命名或进行所需的任何编辑。
  3. 转到数据库 - 从数据库更新模型 - 指向生成的sql文件。
  4. 该工具显示更新的模型。