Fehler oder Eigenschaft?

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)

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?