Recentemente ho creato una tabella come superutente includendo una colonna ID seriale, ad es.
create table my_table
(
id serial primary key,
data integer
);
Poiché volevo che il mio utente non superutente avesse accesso in scrittura a quella tabella, gli ho concesso le autorizzazioni:
grant select, update, insert, delete on table my_table to writer;
In un momento casuale dopo averlo fatto, gli inserimenti effettuati da quell'utente hanno iniziato a fallire perché l'utente non aveva il permesso di modificare la sequenza my_table_id_seq
associata alla colonna seriale. Purtroppo non riesco a riprodurlo sul mio database attuale.
Ho risolto il problema dando all'utente l'autorizzazione necessaria, in questo modo:
grant all on table my_table_id_seq to writer;
Qualcuno può aiutarmi a capire
- perché, ad un certo punto, le autorizzazioni precedentemente sufficienti potrebbero iniziare a fallire?
- qual è il modo corretto di concedere l'autorizzazione di scrittura per una tabella con una colonna seriale?