Kodulehed
[387] - Andmebaasid II (ITI0207) (sügis 2024)
Esiletöstetud Kiirvalik
Lisainfo Kõige olulisemate tegevuste kiirvalik. Failide saatmiseks valige Vastamine alt sobiv ülesanne.
Üldist
Materjalid
LisainfoMaterjalide kataloogid.
Värvilised mummud tähistavad hinnangulist kataloogide lugemise vajadust. Roheline - suurim, kollane - keskmine, punane või mummuta - väikseim
Isiklik
Lisainfo Info ainult Sulle - teised kasutajad seda ei näe
Abi
Lisainfo Võimalus küsida õppejõult abi (nagu foorum, kus saab küsida küsimusi ja kommenteerida vastuseid)
Mitmesugust
Abi / Kasutajatugi / PostgreSQL

Avalikud küsimused ja vastused:

Küsimuste teemade nimekiri

Anonüümne (02.11.2023 15:19):
Kuidas registreerida PostgreSQLi andmebaasis hetke kuupäev+kellaaeg ilma ajavööndi infota ja ilma sekundi murdosadeta?
Vastus (03.11.2023 15:42): CREATE TABLE Ajatempel(tempel1 TIMESTAMP(0) NOT NULL DEFAULT LOCALTIMESTAMP,
tempel2 TIMESTAMP NOT NULL DEFAULT LOCALTIMESTAMP(0));

INSERT INTO Ajatempel(tempel1, tempel2)
VALUES (DEFAULT, DEFAULT);

SELECT *
FROM Ajatempel;

Mõlemas väljas on ühesugune väärtus - rea lisamise kuupäev ja kellaaeg ilma sekundi murdosadeta.
Veeru tempel1 korral on see saavutatud veeru tasemel deklareeritud kitsendusega, mis ütleb, et veerus sekundi murdosa ei registreerita.
Veeru tempel2 korral on see saavutatud vaikimisi väärtuse leidmise kaudu. Vaikimisi väärtusena registreeritud väärtuse saab teatavasti üle kirjutada.

UPDATE Ajatempel SET tempel2=LOCALTIMESTAMP;

Nüüd on veerus tempel2 ka sekundi murdosad. Selles mõttes on veeru tempel1 korral kasutatud lahendus parem.

Ajatempli tüüpi veeru täpsuse muutmiseks on lause:

 ALTER TABLE Ajatempel ALTER COLUMN tempel2 SET DATA TYPE timestamp(0);

Kui sekundi murdosasid pole vaja registreerida, siis ongi parim lahendus selline, kus sekundi murdosade arvu piiratakse nii veeru tüübi kui ka vaikimisi väärtuse deklareerimisel.

Kui kasutan modelleerimiseks ja SQL koodi genereerimiseks Enterprise Architect 12 või 16 modelleerimisvahendeid, siis saan seal PostgreSQL andmebaasi disaini mudelis määrata TIMESTAMP tüüpi veeru korral pikkuse (length) 0, kuid vaikimisi kasutatavate koodi genereerimise mallide korral sellega koodi genereerimisel ei arvestata.

Hinda vastust:

Keskmine hinne : Pole veel hinnanguid!