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).
/*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).*/
/*Lisamine õnnestub*/
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*/
Kas postitus oli kasulik? Hinda seda!
Keskmine hinne: Pole veel hinnanguid!