Bonjour,

J'essai de faire un trigger pour créer des utilisateur à partir d'une table user

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
CREATE OR REPLACE FUNCTION creation_user() RETURNS trigger AS '
 
DECLARE
 idfy VARCHAR(255);
 passwd VARCHAR(32);
BEGIN
SELECT login, mdp INTO idfy, passwd FROM utilisateur WHERE id_utilisateur=(SELECT MAX(id_utilisateur) FROM utilisateur) ;
 
 IF idfy is not null 
	THEN
	CREATE USER idfy WITH PASSWORD ''passwd'' LOGIN ;
 
 END IF;
RETURN NULL;
END;
' LANGUAGE plpgsql;
 
 
CREATE TRIGGER create_user AFTER INSERT ON utilisateur FOR EACH ROW EXECUTE PROCEDURE creation_user();

Mais le problème c'est que l'uyilisateur crée est idfy et non pas le dernier utilisateur.

J'ai donc testé cette méthode

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
CREATE OR REPLACE FUNCTION creation_user() RETURNS trigger AS '
BEGIN
 
	CREATE USER new.login WITH PASSWORD ''new.mdp'' LOGIN ;
 
 
RETURN NULL;
END;
' LANGUAGE plpgsql;
 
 
CREATE TRIGGER create_user AFTER INSERT ON utilisateur FOR EACH ROW EXECUTE PROCEDURE creation_user();
Le problème c'est qu'il y a une erreur pres de New, mais je ne sais pas vraiment pourquoi

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
ERREUR:  erreur de syntaxe sur ou près de « . »
LINE 4: CREATE USER new.login WITH PASSWORD ''new.mdp'' LOGIN ;
Une petite aide SVP