Vastus (02.11.2023 20:25): Tuleb muuta malle (template), mille põhjal koodi genereeritakse. Malle tuleb muuta eraldi iga faili puhul, milles olevast mudelist soovitakse koodi genereerida.
Järgnevad probleemid esinevad EA12-ga vaikimisi kaasa tulevates mallides. EA16 korral on genereeritud koodis tabelite, kitsenduste ja indeksite nimed jutumärkides, kuid veergude nimed ei ole. SERIALiga seotud probleemi EA16 genereeritud koodis ei esine. TIME ja TIMESTAMP tüüpide puhul täpsuse 0 mitte arvestamine esineb nii EA12 kui EA16 korral.
Mallide vaatamiseks ja muutmiseks valige Package=>Database Engineering=>Edit DDL Templates
Seejärel valige liitboksist Language andmebaasisüsteem - antud juhul PostgreSQL.
Malli muutmise järel tuleb salvestamiseks selle juures vajutada Save nupule või vajutada Ctrl+S.
1. Kuidas teha nii, et genereeritud koodis poleks andmebaasiobjektide identifikaatorid e nimed jutumärkides?
Näiteks lause CREATE TABLE "Riik" (...
asemel tahaksin lauset CREATE TABLE Riik (...
.
Valige mall DDL Left Surround ja kustutage sealt jutumärk ("). Ärge ridu kustutage.
Valige mall DDL Right Surround ja kustutage sealt jutumärk ("). Ärge ridu kustutage.
2. Kuidas teha nii, et genereeritud koodis poleks SERIAL veeru korral eraldi arvujada generaatori loomist, veeruga sidumist ja siis ka arvujada generaatori kustutamist? SERIAL notatsiooni e tähistuse kasutamise korral toimub see kõik ju automaatselt.
Näiteks koodi
DROP SEQUENCE IF EXISTS isik_isik_id_seq
;
CREATE TABLE Isik
(
isik_id serial NOT NULL DEFAULT nextval(('isik_isik_id_seq'::text)::regclass),
...
)
;
CREATE SEQUENCE isik_isik_id_seq INCREMENT 1 START 1
;
asemel soovin koodi
CREATE TABLE Isik
(
isik_id serial NOT NULL,
...
)
;
Selleks laadige alla selle vastusega seotud fail ning muutke oma mudelifailis järgmised mallid selliseks nagu need on selles failis. Jälgige, et iga malli lõpus oleks tühi rida. Need uued malli versioonid on võetud EA 16 vahendist. Kui klõpsate EA-s mallide nimekirjas veerul Name, siis saate need tähestiku järgi sorteerida.
- DDL Column Definition
- DDL Column Extras
- DDL Create Sequence
- DDL Drop Column Extras
- DDL Drop Sequence
- DDL Script File
3. Kuidas teha nii, et genereeritud koodis oleks TIME ja TIMESTAMP tüüpide korral arvestatud mudelis määratud täpsusega 0, mis tähendab, et sekundi murdosasid ei registreerita?
Näiteks koodi
CREATE TABLE Isik
(
reg_aeg timestamp without time zone NOT NULL DEFAULT LOCALTIMESTAMP(0),
...
)
;
asemel soovin koodi
CREATE TABLE Isik
(
reg_aeg timestamp(0) NOT NULL DEFAULT LOCALTIMESTAMP(0),
...
)
;
Selleks laadige alla selle vastusega seotud fail ning muutke oma mudelifailis mall
DDL Data Type selliseks nagu see on selles failis. Jälgige, et malli lõpus oleks tühi rida. Kui klõpsate EA-s mallide nimekirjas veerul
Name, siis saate need tähestiku järgi sorteerida.