Je suis novice en matière de postgres (et de systèmes d'information sur les bases de données en général). J'ai exécuté le sql script suivant sur ma base de données :
create table cities (
id serial primary key,
name text not null
);
create table reports (
id serial primary key,
cityid integer not null references cities(id),
reportdate date not null,
reporttext text not null
);
create user www with password 'www';
grant select on cities to www;
grant insert on cities to www;
grant delete on cities to www;
grant select on reports to www;
grant insert on reports to www;
grant delete on reports to www;
grant select on cities_id_seq to www;
grant insert on cities_id_seq to www;
grant delete on cities_id_seq to www;
grant select on reports_id_seq to www;
grant insert on reports_id_seq to www;
grant delete on reports_id_seq to www;
Quand, comme l'utilisateur www, essayant de :
insert into cities (name) values ('London');
Je reçois l'erreur suivante :
ERROR: permission denied for sequence cities_id_seq
Je comprends que le problème réside dans le type de série. C'est pourquoi j'accorde des droits de sélection, d'insertion et de suppression pour le *_id_seq à www. Pourtant, cela ne résout pas mon problème. Que me manque-t-il ?
3 votes
Accorder l'insertion/suppression sur une séquence n'a aucun sens pour moi. Je suis même surpris que cela fonctionne.