如何将序列与PowerDesigner中的列关联?

时间:2015-07-10 18:04:00

标签: postgresql powerdesigner

我使用powerdesigner 15.2来建模postgresql数据库,但我无法将序列与PK相关联...... 在互联网上阅读:

"要将序列与列关联,请双击列条目。然后,在“常规”选项卡中,指定序列的名称。"

但我已经这样做了......

Sequence associated

问题在于,当我生成数据库时,只是创建了序列,但没有与列相关联...

create sequence SQ_CARGO;

create table CARGO (
   ID                   INT4                 not null,
   NOME                 VARCHAR(20)          not null,
   ROLE                 VARCHAR(100)         not null,
   constraint PK_CARGO primary key (ID)
);

Powerdesigner中的当前DBMS:PostgreSQL 8(但我使用postgresql 9.4)

谁知道怎么做?否则我将被迫为每个表手动设置:

ALTER TABLE cargo ALTER COLUMN ID SET DEFAULT NEXTVAL('SQ_CARGO'::regclass);

3 个答案:

答案 0 :(得分:1)

要解决此问题,我编写了此代码并在DBMS属性中替换值:(Script-> Objects-> Table-> Create)。

create [%Temporary% ]table [%QUALIFIER%]%TABLE% ( %TABLDEFN% )
[%OPTIONS%];

.foreach_item(Columns)
    .if (%COLNNO%==1) && (%Primary% == TRUE) && (%SQNC% != "") 
        ALTER TABLE [%QUALIFIER%]%TABLE% ALTER COLUMN %COLUMN% SET DEFAULT
nextval('[%QUALIFIER%]%SQNC%')
    .endif 
.next(\n)

利用它生成代码SEQUENCE的创建时遇到问题。

我无法使用前缀对象的OWNER生成代码。

例如: 代码生成如下:

CREATE SEQUENCE TABLE_SQ;

它应该像这样生成:

CREATE SEQUENCE OWNER.TABLE_SQ;

答案 1 :(得分:1)

@Gilvan:您必须在" New Sequence"上选择所有者。窗口,在"所有者"组合框。

答案 2 :(得分:1)

是一个错误! 下载新版本并且工作正常。