einzelne Zellen protecten, read only geht das ?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Ernie1412
User
Beiträge: 161
Registriert: Freitag 10. Januar 2020, 20:38

kann man einzelne Zellen in einer Datenbank als read only markieren, so das wenn einer schreiben will, das nicht geht ?
ich benutze sqlite in Verbindung mit QtSQL.
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Vermutlich durch ableiten des SQL Models und überladen der flags-Methode, die es erlaubt festzulegen, wie eine Zelle bearbeitet werden kann. https://doc.qt.io/qt-5/qabstractitemmodel.html#flags
Ernie1412
User
Beiträge: 161
Registriert: Freitag 10. Januar 2020, 20:38

nee glaube das ist der falsche Weg.
Ich denke das geht über SQL code "Trigger"
CREATE TRIGGER trigger_name
BEFORE UPDATE
ON table_name ...
und weiter ?
so sagt er mit error:
CREATE TRIGGER cell_readonly BEFORE UPDATE ON name FOR EACH ROW (SELECT name FROM DB_Artist WHERE ArtistID=1)
BEGIN
SELECT raise(abort, 'Hier nicht erlaubt !');
END

ich habs hinbekommen juhu :)
CREATE TRIGGER cell_readonly BEFORE UPDATE OF name ON DB_Artist WHEN EXISTS(SELECT name FROM DB_Artist WHERE ArtistID=1)
BEGIN
SELECT raise(abort, 'Hier nicht erlaubt !');
END

https://www.sqlite.org/lang_createtrigger.html

die Seite hat mir dabei geholfen. Man bin ich froh :)

ich glaube jetzt muss ich für jede zelle einen trigger erstellen
Ausführung wurde mit Fehlern beendet.
Ergebnis: trigger cell_readonly already exists bekomme ich sonst
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

sqlite ist eng mit dem Programm, das die Datenbank benutzt, verknüpft. Da ist es üblicher, die Logik, was verändert werden darf, im Programm zu implementieren. Denn diese Regeln sollten ja nochmal in der GUI durchgesetzt werden, denn sonst ist die User-Experience recht mäßig.
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Kann man so machen. Dann ist es halt 💩 🤷🏼‍♂️
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

@Ernie1412: Mir fällt ehrlich gesagt kein Grund ein, warum man das überhaupt machen sollte. Warum sollen denn bestimmte Datensätze nicht zu verändern sein?
Antworten