Recentemente, criei uma tabela como superusuário, incluindo uma coluna de identificação serial, por exemplo,
create table my_table
(
id serial primary key,
data integer
);
Como eu queria que meu usuário não superusuário tivesse acesso de gravação a essa tabela, concedai permissões:
grant select, update, insert, delete on table my_table to writer;
Em um momento aleatório após isso, as inserções feitas por esse usuário começaram a falhar porque o usuário não tinha permissão para modificar a sequência my_table_id_seq
associada à coluna serial. Infelizmente não consigo reproduzir isso no meu banco de dados atual.
Eu trabalhei em torno disso, dando ao usuário a permissão necessária, assim:
grant all on table my_table_id_seq to writer;
Alguém pode me ajudar a entender
- por que, em algum momento, as permissões anteriormente suficientes podem começar a falhar?
- qual é a maneira correta de conceder permissão de gravação para uma tabela com uma coluna serial?