salut a tous,

j'ai un soucis, je souhaite restreindre l'acces des donnees d'une table suivant l'utilisateur connecte. j'ai donc cree un champ user_name me permettant de filtrer mes donnees et une vue sur cette table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
CREATE TABLE contact_table
(contact_id integer, 
first_name character varying (50),
user_name name default current_user);
 
create view contact
(contact_id, 
first_name)
as select 
contact_id,
first_name,
user_name
from contact_table
where
user_name = current_user
je veux pouvoir inserer dans la table, j'ai donc cree une regle qui me permet de rendre le systeme transparent :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
CREATE RULE _insert_into_contact AS
ON insert
TO contact
DO INSTEAD 
INSERT INTO contact_table VALUES (
           NEW.contact_id,
           NEW.first_name);
Ceci marche tres bien,
ce syteme me permet de ne voir que les donnees inserees par l'utilisateur connecte et je peux inserer des donnees
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
insert into contact values (1, 'toto);
sauf que le probleme arrive lorsque je remplace mon integer de contact_id par une sequence.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
CREATE TABLE contact_table
(contact_id serial NOT NULL PRIMARY KEY, 
first_name character varying (50),
user_name name default current_user);
je ne peux alors pas faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
 insert into contact (first_name)  values ( 'titi');
ERROR:  null value in column "contact_id" violates not-null constraint
et si je fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
 insert into contact values (1,'toto');
INSERT 96880021 1
ca marche bien entendu mais ceci n'utilise pas la sequence, et ensuite si j'essaie d'inserer dans la table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
insert into contact_table  (first_name)  values ( 'titi');
ERROR:  duplicate key violates unique constraint "contact_table_pkey"
comment je dois faire (si c'est possible) pour pouvoir inserer dans ma table a partir de ma vue (grace a la regle) sans avoir a me preoccuper de la valeur de la pk et laisser ce probleme etre gere par l'incrementation automatique ?(serial ou sequence, je ne sais pas quel terme employer)

Merci