0

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

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

在 PowerDesigner 15 中是否有一种简单的方法来实现这一点?

4

3 回答 3

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。谢谢,理查德。

于 2010-03-03T10:23:42.337 回答
0

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

或者:

  • 可以调出列列表(右键单击包或模型,列表 -> 列)

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

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

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

于 2010-02-24T15:55:06.707 回答
0

有一个更简单的方法。

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

该工具显示更新的模型。

于 2016-11-28T13:01:06.547 回答