Kumb on parem - kas trigeri käivitamise piiramine WHEN klausli abil või IF lausete kasutamine trigeri funktsioonis? Kõigepealt käsitlen jõudluse aspekti. PostgreSQL 18 (ja ka varasemate versioonide) puhul on teooria selline: WHEN klausel: Kontroll toimub enne trigeri protseduuri (funktsiooni) väljakutsumist. Kui tingimus on v... PostgreSQLtrigerWHEN klauselIF lausePL/pgSQLpgbenchjõudlushallatavusGemini 01.12.2025 14:44 | Erki Eessaar
Kui kontseptuaalses andmemudelis on üldistusseosed, siis kas neid võiks PostgreSQL andmebaasis realiseerida kasutades tabelite pärimist? See pole soovitav pärimise kaudu tabelite loomise tehniliste piirangute tõttu. Vaatame näidet. Iga isik on mingis täpselt ühes seisundis. Isik võib olla klient või töötaja. Võib olla isikuid, kes on nii klient kui ... PostgreSQLINHERITSpärimineüldistusseosedobjekt-relatsiooniline 22.11.2025 17:25 | Erki Eessaar
Kuidas luua TI abil interaktiivseid õpinäiteid? Üheks strateegiaks on paluda genereerida keelemudelil väike interaktiivne näide, mis oleks üks html fail ja kus võib kasutada HTMLi, CSSi, jQueryt, JavaScripti ja Bootstrapi. Sellise lehe vaatamiseks piisab, kui see html fail kettale salvestada ... AITIpromptviiptehisintellektGeminiõppematerjalidHTMLJavaScriptinteraktiivsus 14.11.2025 13:48 | Erki Eessaar
Kuidas SQLite korral realiseerida klassifikaatorite tabeleid, kus on kood ja nimetus? Koodi peaks sisestama inimkasutaja, mitte genereerima süsteem. Katsetasin seda koodi DB Fiddle keskkonnas. CREATE TABLE Tellimuse_seisundi_liik (tellimuse_seisundi_liik_kood INTEGER NOT NULL,... primaarvõtiesmasvõtiarvujada generaatorsurrogaatvõtiSQLiteklassifikaatorautomaatne väärtuskood 03.05.2025 11:26 | Erki Eessaar
Kuidas tagada andmebaasioperatsiooni realiseerivas rutiinis, et operatsiooni järeltingimused saavutatakse vaid siis, kui kõik eeltingimused on täidetud? Lepingprojekteerimise (design by contract) kohaselt kirjeldatakse tarkvaraelement kasutades eeltingimusi, järeltingimus... lepingprojekteerimineeeltingimusedjäreltingimusedinvariandidtrigeridkitsendusedrutiinid 21.12.2024 19:25 | Erki Eessaar
Kas CHECK kitsendustes saab kasutada mittedeterministlikke funktsioone? Deterministlik funktsioon tagastab samade argumentidega (sisendandmetega) alati samasuguse väärtuse. Mittedeterministlik funktsioon võib tagastada samade argumentidega erinevatel ajahetkedel erineva tulemuse. Mittedeterministlikud funktsioonid on nä... CHECK kitsendusdeterministlik funktsioonCURRENT_DATESQL standardandmete terviklikkusandmebaasisüsteemidretrospektiivne 22.11.2024 14:57 | Erki Eessaar
Kuidas kustutada korraga mitu tabeliga seotud kitsendust? See on hea näide, kuidas SQLi dialekt e mägimurrak erineb erinevates andmebaasisüsteemides detailide poolest. Järgnev katsetus tehti keskkondades DB Fi... kitsenduste kustutamineALTER TABLESQL süntaksDDLandmebaasisüsteemidporditavusDROP CONSTRAINT 14.11.2024 11:52 | Erki Eessaar
Milliseid soovitusi annavad teadusuuringut selles osas, kuidas suurte keelemudelite abil SQL koodi genereerida? Chang ja Lussier (2023) katsetavad erinevaid võimalusi ja annavad soovitusi suurte keelemudelite promptimiseks ... OpenAIChatGPTLLMsuur keelemudeltehisintellektAITIpromptviipSQL genereerimine 01.11.2024 12:17 | Erki Eessaar
Kuidas konkateneerida MS Accessis, PostgreSQLis ja LibreOffice Baseis tekstilisi väärtuseid, kui üks väärtus puudub (on NULL)? Oletame, et andmebaasis on tabel, kuhu on lisatud kaks rida andmeid. Ühel isikul perenimi puudub (on NULL).CREATE TABLE Isik(isik_id INTEGER,eesnimi VARCHAR(50) NOT NULL,perenimi VARCHAR(50), stringide liitminekonkatenatsioonNULL väärtusCoalesceMS AccessPostgreSQLConcat 23.03.2024 16:53 | Erki Eessaar
Kas tühja stringi esinemise keelamine ja NOT NULL kitsendus on üks ja sama asi? Ei ole! Tühi string on väärtus (kuigi väga lühike).NULL on tähis, et väärtust ei ole.NOT NULL veergu saab seega tühja stringi panna, sest see täidab tingimuse, et väljas peab väärtus olema.Kui näiteks s... tühi stringNULLNOT NULLCHECK kitsendusOracle erinevusedandmekvaliteetpuuduvad väärtused 03.03.2024 12:21 | Erki Eessaar