首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerDesigner 16.5 - SQL Server创建数据库脚本中的列名

PowerDesigner 16.5 - SQL Server创建数据库脚本中的列名
EN

Stack Overflow用户
提问于 2016-05-07 03:07:21
回答 2查看 1.2K关注 0票数 0

我在PowerDesigner 16.5中有我的数据库的物理数据模型,我想生成SQL Server2012创建数据库脚本。问题是,当我生成这样的文件时,表的列名与模型的"CODE“列中定义的列名相同,我希望它们与表的"NAME”列中的列名相同。

您知道在前面提到的生成文件的过程中,如何强制PowerDesigner从“名称”而不是“代码”中获取列名吗?

EN

回答 2

Stack Overflow用户

发布于 2016-05-07 16:19:45

您可以在DBMS属性中更改SQL生成模式。在数据库菜单中,应该有一个“编辑当前数据库管理系统...”菜单项,打开包含所有生成模式的对话框。

在那里,您可以找到包含列的所有层代(列本身、表、引用、索引等)。并将"COLUMN“(或"COLNCODE")替换为"COLNNAME”。

但是,请注意,可能需要相当多次的迭代才能发现所有这些地方。此外,我强烈建议首先备份数据库属性文件- *.xdb -,因为它很容易破坏某些东西,并且整个DB生成都将被破坏。

票数 0
EN

Stack Overflow用户

发布于 2016-05-09 14:39:03

您可以更改Tools > Model Options > Naming Convention > Table > Code下的命名约定,将Character case设置为Mixed CASe,将Valid characters设置为All valid。这样,所有未来的对象都将有一个与它们的Name匹配的Code

然而..。我发现使用稍微受限的SQL名称更容易,避免在使用它们的地方引用它们;此外,这迫使我对code / SQL名称三思而后行,这使它们更稳定:我避免在“员工负责”、“负责任的员工”、“死人推动者”之间跳跃,这将更新SQL名称;我满足于"RespEmpl“(假设所有的SQL名称必须有4或8个字符),并一直摆弄Name,直到我厌倦为止。

好的..。在更改Model Options之后,我找不到一种方法来在现有对象上再次应用名称到代码的转换,所以下面是一个执行此操作的脚本:

代码语言:javascript
复制
option explicit
   ' avoid endless loop in case of some mistake, adjust to model objects number
   ' set to -1 to disable
   const maxcount = 1000
   dim count : count = 0
   dim f : set f = ActiveModel
   descent f
sub descent(f)
   if maxcount > 0 and count > maxcount then exit sub
   output "... entering " & f.Name
   dim c
   for each c in f.Children
      count = count + 1
      if maxcount > 0 and count > maxcount then exit for
      if c.ClassKind = cls_Table then
         rename c
      elseif isKindOf(c.ClassKind, cls_BaseFolder) then
         descent c
      end if
   next
end sub
sub rename(o)
   dim n : n = o.Code
   o.setNameToCode
   if o.Code <> n then output "   " & o.ClassName & " " & o.Name & ", " & n & " => " & o.Code
end sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37079736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档