Bonjour, j'ai créé une table 'fonction' en tant que super utilisateur postgres....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
CREATE TABLE hl.fonction (id integer PRIMARY KEY NOT NULL DEFAULT  nextval('hl.fonction_id_seq'::regclass), nom VARCHAR (100),parent_id INTEGER DEFAULT NULL CONSTRAINT fonction_fkey1 REFERENCES hl.fonction, ordre INTEGER DEFAULT 0,produit VARCHAR(100) CONSTRAINT fonction_fkey2 REFERENCES hl.produit ON UPDATE CASCADE, CONSTRAINT fonction1_check CHECK (id > parent_id));
J'ai attribué tous les droits à l'utilisateur postgres qui est le propriétaire de toutes mes tables.
Quand je fais un insert dans cette table j'ai un message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
PDOStatement::execute(): SQLSTATE[42501]: Insufficient privilege 7 ERREUR: droit refus\xc3\xa9 pour la relation fonction\nCONTEXT:  instruction SQL \xc2\xab I    NSERT INTO hl.fonction(nom, ordre, produit) VALUES( $1 ,  $2 ,  $3 ) RETURNING id \xc2\xbb\nPL/pgSQL function "fonction_add"


voila ma fonction add qui marche super bien.

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
17
18
19
20
21
22
 
CREATE OR REPLACE FUNCTION hl.fonction_add(parent_id_   INTEGER,
                                           nom_         VARCHAR,
                                           ordre_       INTEGER,
                                           produit_     VARCHAR)
RETURNS INTEGER AS $$
DECLARE
  id_fonction_    hl.fonction.id%TYPE;
BEGIN
  IF parent_id_ <= 0 THEN
    INSERT INTO hl.fonction(nom, ordre, produit)
    VALUES(nom_, ordre_, produit_)
    RETURNING id INTO id_fonction_;
    RETURN id_fonction_;
  ELSE
    INSERT INTO hl.fonction(parent_id, nom, ordre, produit)
    VALUES(parent_id_, nom_, ordre_, produit_)
    RETURNING id INTO id_fonction_;
    RETURN id_fonction_;
  END IF;
END;
$$ LANGUAGE 'plpgsql';
L'un de vous a-t-il une idée?