Fehler oder Eigenschaft?

Hier geht es um die Verwaltung von Benutzern und Rechten.
Antworten
HeiDieLX
Neuer Benutzer
Beiträge: 16
Registriert: Di 1. Mär 2016, 08:35

Fehler oder Eigenschaft?

Beitrag von HeiDieLX » Fr 24. Mär 2017, 16:02

Hallo,

bin mir nicht sicher ob das hier richtig ist. Habe jedoch auch keine passendere Stelle gefunden.

gegeben:
PostgreSQL 9.5.1/Windows 7

LOGIN ROLE
1. hcadmin: Alle Rechte ohne Superuser; Eigner der Datenbank hcdat
2. htr: nur login
3. hd-lmobil: nur login
4. hd-arbeit: nur login

Gruppenrolle: grphtr, ist nur da.
Mitglieder: htr, hd-lmobil und hd-arbeit
Rechte auf alle tabellen und sichten: select, update, insert, delete
Rechte auf alle Sequenzen select, update

In den Filtertabellen sind die rechte gem. "Row-Level Security and Policis" auf die Zeilen des jeweiligen angemeldeten Benutzer beschränkt.

Problembeschreibung:
Anmeldung als hcadmin
hcdat=> SELECT fltwohn_ben, fltort, fltstr, fltetcid1 from hc_fltwohn;
fltwohn_ben | fltort | fltstr | fltetcid1
-------------+--------+---------+-----------
hd-lmobil | landau | cornich | 1756
htr | frankf | | 988
hd-arbeit | landau | corn | 3222
(3 Zeilen)
gebraucht wird nur der wert aus fltetcid1, die anderen Felder dienen nur der Übersichtlichkeit.

Nun Anmeldung als Benutzer htr;
hcdat=> SELECT fltwohn_ben, fltort, fltstr, fltetcid1 from hc_fltwohn;
fltwohn_ben | fltort | fltstr | fltetcid1
-------------+--------+--------+-----------
htr | frankf | | 988
(1 Zeile)
jep, soweit als richtig

Nun wieder als hcadmin
Den oberen select nun als Unterabfrage um an die eigentlich gewünschten daten zu kommen.
hcdat=> SELECT sc.inhalt, k.kwert FROM hc_kont k, hc_schl sc WHERE k.vid_kschl =
sc.id_schl and k.vid_pers = (SELECT fltetcid1 FROM hc_fltwohn) LIMIT 6;
FEHLER: als Ausdruck verwendete Unteranfrage ergab mehr als eine Zeile
hcdat=>
jo, hatte ich so erwartet.

Benutzer htr:
hcdat=> SELECT sc.inhalt, k.kwert FROM hc_kont k, hc_schl sc WHERE k.vid_kschl =
sc.id_schl and k.vid_pers = (SELECT fltetcid1 FROM hc_fltwohn) LIMIT 6;
inhalt | kwert
-------------------+---------------------------
Telefon übernahme | 069/816049 Herrn Krause
(1 Zeile)
sensationell, funktioniert wie gewünscht.

so nun das ganze in einen View gepackt: (hat der hcadmin gemacht)

Code: Alles auswählen

hcdat=> CREATE VIEW v_svkont AS
SELECT sc.inhalt, k.kwert FROM hc_kont k, hc_schl sc WHERE k.vid_kschl =
sc.id_schl and k.vid_pers = (SELECT fltetcid1 FROM hc_fltwohn) LIMIT 6;
CREATE VIEW

und nun kommt dies
hcdat=> select * from v_svkont;
FEHLER: als Ausdruck verwendete Unteranfrage ergab mehr als eine Zeile
Ist das nun ein Fehler oder gehört das so?
MfG
HeiDieLX
Switi vom Bienwald
OpenSuse 42.1
PostgeSQL 9.4 bzw. 9.5

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast