Käivitan PostgreSQLis funktsiooni, kuid seda ei täideta, sest ei leita funktsioonis viidatud tabelit. Mis on viga ja kuidas seda lahendada?

Näide: Lõin andmebaasis funktsiooni f_on_juhataja

SELECT f_on_juhataja(p_kasutajanimi:='joy.hawkins@geekosis.name', p_parool:='Boss');

ERROR: relation "isik" does not exist

LINE 2: FROM isik INNER JOIN tootaja ON isik.isik_id = tootaja.isik_...

Postitas Erki Eessaar, 01.06.2022 00:00
Kirjutasite funktsiooni loomise lauses:

SET search_path = 'public, pg_temp'

Tekst, mis on apostroofide e ülakomade vahel, on PostgreSQLi jaoks kokku üks skeemi nimi. PostgreSQL hakkas otsima sellise nimega skeemist tabelit Isik. Kuna sellist skeemi andmebaasis ei ole, siis ei leitud ka tabelit.

Õige on kirjutada otsingutee ilma ülakomadeta:

SET search_path = public, pg_temp

Otsingutee on vajalik, et SECURITY DEFINER funktsioon oleks turvaline.


Kas postitus oli kasulik? Hinda seda!

Keskmine hinne: Pole veel hinnanguid!


← Eelmine postitus Lõin PostgreSQL andmebaasis <b>protseduuri</b> (CREATE PROCEDURE lause). Seda MS Accessi rakendusest välja kutsudes saan veateateid nagu: <ul> <li>Error while preparing parameters. <li>ERROR: ... is a procedure; Error while preparing parameters. </ul> <p>Milles on viga ja mida selle parandamiseks ette võtta? Järgmine postitus → Kuidas kutsuda PostgreSQLis välja funktsiooni või protseduuri, mille mõni parameeter on SMALLINT tüüpi?