Kodulehed
[383] - Andmebaasid II (ITI0207) (sügis 2022)
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

Erki Eessaar (27.10.2022 10:28):
Kas PostgreSQLi DATE ja TIMESTAMP tüüpi veergude kitsenduste puhul tuleb arvestada spetsiaalväärtusega 'infinity'?
Vastus (27.10.2022 10:31): Jah, mõnikord tuleb. Toon näite.

PostgreSQLi DATE ja TIMESTAMP tüüpidesse kuuluvad spetsiaalväärtused 'infinity' (suurem kui kõik ülejäänud DATE/TIMESTAMP väärtused) ja '-infinity' (väiksem kui kõik ülejäänud DATE/TIMESTAMP väärtused).

CREATE TABLE Bronn (bronn_id SERIAL,
ruumi_nr INTEGER NOT NULL,
alguse_aeg TIMESTAMP NOT NULL,
lopu_aeg TIMESTAMP NOT NULL DEFAULT 'infinity',
CONSTRAINT pk_bronn PRIMARY KEY (bronn_id),
CONSTRAINT ak_bronn UNIQUE (ruumi_nr, alguse_aeg),
CONSTRAINT chk_bronn_alguse_aeg CHECK(alguse_aeg>='2020-01-01' AND alguse_aeg<'2200-01-01'),
CONSTRAINT chk_bronn_lopu_aeg CHECK(lopu_aeg>='2020-01-01' AND lopu_aeg<'2200-01-01'));

INSERT INTO Bronn (ruumi_nr, alguse_aeg)
VALUES (1, '2022-10-04 12:00'),
(2, '2022-10-04 12:00');

/*Lisamine ebaõnnestub
ERROR:  new row for relation "bronn" violates check constraint "chk_bronn_lopu_aeg"
DETAIL:  Failing row contains (1, 1, 2022-10-04 12:00:00, infinity).*/

ALTER TABLE Bronn DROP CONSTRAINT chk_bronn_lopu_aeg;

ALTER TABLE Bronn ADD CONSTRAINT chk_bronn_lopu_aeg CHECK(lopu_aeg>='2020-01-01' AND lopu_aeg<'2200-01-01' OR lopu_aeg='infinity');

INSERT INTO Bronn (ruumi_nr, alguse_aeg)
VALUES (1, '2022-10-04 12:00'),
(2, '2022-10-04 12:00');

/*Lisamine õnnestub*/

Hinda vastust:

Keskmine hinne : Pole veel hinnanguid!