Mida tähendab, et kirjutage INSERT lause nii, et see poleks tundlik veergude järjekorra muutmise suhtes?

Postitas Erki Eessaar, 01.06.2022 00:00
Halb:
  • INSERT INTO Isik VALUES ('39107070123', 'Mets');
    1. Kui tabelis Isik muutub veergude järjekord, siis tuleb seda lauset muuta.
    2. Vastasel juhul võib lisamine ebaõnnestuda, või mis veel hullem, lisamine õnnestub, kuid väärtused lähevad valedesse väljadesse.
    3. Lause ei kirjelda esitatud väärtuste tähendust.
Palju parem:
  • INSERT INTO Isik (isikukood, perenimi) VALUES ('39107070123', 'Mets');
    1. Kui tabelis Isik muutub veergude järjekord, siis ei tule seda lauset muuta.
Halb:
  • INSERT INTO Magamine_koopia SELECT * FROM Magamine;
    1. Lisaks eelnimetatud probleemidele ei näe koodi lugeja, millised veerud ja millises järjekorras alampäringu poolt tagastatakse.
Palju parem:
  • INSERT INTO Magamine_koopia (ase_id, algus, magaja_id, kestus, kommentaar)
    SELECT ase_id, algus, magaja_id, kestus, kommentaar
    FROM Magamine;

Kas postitus oli kasulik? Hinda seda!

Keskmine hinne: Pole veel hinnanguid!


← Eelmine postitus Ühes õppematerjalis on öeldud "Objekt-relatsiooniliste andmebaasisüsteemide loomine tuleneb lõppkokkuvõttes sellest, et tänapäeva SQL-andmebaasisüsteemid ei realiseeri täies ulatuses relatsioonilist mudelit ja see tekitab probleeme." Millist osa relatsioonilisest mudelist SQL andmebaasisüsteemid ei realiseeri? Miks nõnda? Järgmine postitus → Kas olemasse tabelisse T ridade lisamiseks võib MS Accessis kasutada SELECT ... INTO T FROM ... lauset?