Как связать последовательность с колонкой в PowerDesigner?
Я использую powerdesigner 15.2 для моделирования базы данных postgresql, но я не могу связать последовательности с PK... читайте в интернете, что:
"Чтобы связать последовательность со столбцом, дважды щелкните запись столбца. Затем на вкладке" Общие "укажите имя последовательности".
но я уже сделал это...
проблема в том, что когда я генерирую базу данных, последовательности просто создаются, но не связаны со столбцом...
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: PostgreSQL 8 (но я использую postgresql 9.4)
кто-нибудь знает как это сделать? или же я буду вынужден установить это вручную для каждой таблицы:
ALTER TABLE cargo ALTER COLUMN ID SET DEFAULT NEXTVAL('SQ_CARGO'::regclass);
3 ответа
@Gilvan: Вы должны выбрать владельца в окне "New Sequence", в поле со списком "Owner".
Чтобы решить эту проблему, я написал этот код и заменил в свойствах СУБД значение:(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.
Я не могу получить код для генерации с ВЛАДЕЛЕЦОМ объекта префикса.
пример: код генерируется следующим образом:
CREATE SEQUENCE TABLE_SQ;
И это должно быть сгенерировано так:
CREATE SEQUENCE OWNER.TABLE_SQ;