Kürzlich habe ich eine Tabelle als Superuser erstellt, die eine Spalte mit der Seriennummer enthält, z.
create table my_table
(
id serial primary key,
data integer
);
Da ich wollte, dass mein Nicht-Superuser-Benutzer Schreibzugriff auf diese Tabelle hat, erteilte ich ihr folgende Berechtigungen:
grant select, update, insert, delete on table my_table to writer;
Zu einem zufälligen Zeitpunkt danach begannen die von diesem Benutzer vorgenommenen Einfügungen fehlzuschlagen, da dem Benutzer die Berechtigung zum Ändern der my_table_id_seq
der seriellen Spalte zugeordneten Sequenz fehlte . Leider kann ich das in meiner aktuellen Datenbank nicht reproduzieren.
Ich habe dies umgangen, indem ich dem Benutzer die erforderliche Berechtigung erteilt habe:
grant all on table my_table_id_seq to writer;
Kann mir jemand helfen zu verstehen
- Warum können die zuvor ausreichenden Berechtigungen irgendwann fehlschlagen?
- Was ist der richtige Weg, um eine Schreibberechtigung für eine Tabelle mit einer seriellen Spalte zu erteilen?