Kuidas SQLite korral realiseerida klassifikaatorite tabeleid, kus on kood ja nimetus? Koodi peaks sisestama inimkasutaja, mitte genereerima süsteem.

Postitas Erki Eessaar 03.05.2025 11:26

Katsetasin seda koodi DB Fiddle keskkonnas.

CREATE TABLE Tellimuse_seisundi_liik (tellimuse_seisundi_liik_kood INTEGER NOT NULL,
nimetus TEXT NOT NULL,
CONSTRAINT pk_tellimuse_seisundi_liik PRIMARY KEY (tellimuse_seisundi_liik_kood),
CONSTRAINT ak_tellimuse_seisundi_liik UNIQUE (nimetus));

INSERT INTO Tellimuse_seisundi_liik (tellimuse_seisundi_liik_kood, nimetus)
VALUES (1, 'Esitatud'); --lisamine õnnestus
INSERT INTO Tellimuse_seisundi_liik (nimetus)
VALUES ('Kinnitatud'); --lisamine õnnestus, genereeriti kood 2

SELECT * FROM Tellimuse_seisundi_liik; --Tabelis kaks rida

INSERT INTO Tellimuse_seisundi_liik (tellimuse_seisundi_liik_kood, nimetus)
VALUES (3, 'Kinnitatud');

SELECT * FROM Tellimuse_seisundi_liik;

--INSERT lause tekitas vea, mistõttu päringut ka ei täidetud.

Selline automaatne väärtuse genereerimine INTEGER tüüpi primaarvõtme veergu on SQLite omapära. Andmebaasi kasutajatel tuleks võtta teadmiseks, et klassifikaatori tabelite korral peab kasutaja tabelisse ka koodi lisama.

Hinda postitust:

Keskmine hinne : Pole veel hinnanguid!