Recently I did create a table as a superuser including a serial id column, e.g.,
create table my_table
(
id serial primary key,
data integer
);
As I wanted my non-superuser user to have write access to that table, I granted it permissions:
grant select, update, insert, delete on table my_table to writer;
At a random point in time after doing so, the insertions made by that user started to fail because the user lacked permission to modify the sequence my_table_id_seq
associated to the serial column. Unfortunately I can’t reproduce that on my current database.
I worked around this by giving the user the required permission, like this:
grant all on table my_table_id_seq to writer;
Can someone help me understand
- why, at some point, the previously sufficient permissions might start to fail?
- what is the proper way to grant write permission for a table with a serial column?