Kodulehed
[379] - Andmebaasid II (ITI0207) (sügis 2020)
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 / Rakenduse tegemine

Avalikud küsimused ja vastused:

Küsimuste teemade nimekiri

Anonüümne:
Tegin pgApexis vaadete ekraanivorme ning avastasin, et vaatest oli väli puudu. pgApex näitas vaatele vastaval ekraanivormil päringu tulemusel saadud andmeid. Lisasin puuduva välja kustutades vastava vaate ning luues selle uuesti. Kuid nüüd ei näita pgApex enam vastavas vaates andmeid. Testimiseks tegin uue rakenduse, aga ka seal ei tekkinud otsitavad andmed.

Kas ja kuidas mul oleks võimalik vaadete andmed uuesti rakendusse saada? Mida ma saaksin edaspidi teist moodi teha, et rohkem sellist probleemi ei esineks?

Vastus: Probleem on selles, et rakendusele vastaval kasutajal pole õigust vaatest andmeid küsida (SELECT õigus). See õigus läks kaotsi, kui vaate kustutasite ja uuesti lõite (DROP lause + CREATE lause). Lahenduseks on anda rakendusele vastavale kasutajale uuesti vaadetest andmete lugemise õigus. Seega tuleb peale vaate kustutamist ja uuesti loomist käivitada ka GRANT laused vaate suhtes õiguste jagamiseks.

Kui asendate vaate CREATE OR REPLACE lausega, siis on tulemuseks sama vaade ja õigused säilivad. Kuid on tõsi, et:

  • vaatesse veeru lisamiseks,
  • vaatest veeru eemaldamiseks,
  • vaate veeru andmetüübi muutumisel,

tuleb vaade kustutada ja uuesti luua.

CREATE OR REPLACE lausest piisab, kui muudate vaadet nii, et selle veerud jäävad samaks (nt lisate või eemaldate alampäringust tingimusi).

Hinda vastust:

Keskmine hinne : Pole veel hinnanguid!