Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/01/2012, 11h41   #1
Nouveau Membre du Club
 
Homme
Inscription : mars 2004
Messages : 125
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 125
Points : 28
Points : 28
Par défaut Création d'un nouvel utilisateur à partir d'une table [Postgres]]

Bonjour,

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

Code :
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 :
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 :
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
pony99 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 14h43   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 655
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 655
Points : 2 657
Points : 2 657
Bonjour,

j'ai repris le 1er trigger qui était pas si mal que ca :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
CREATE OR REPLACE FUNCTION creation_user()
  RETURNS TRIGGER AS
$BODY$
BEGIN
 
 IF new.idfy IS NOT NULL 
	THEN
	execute  'CREATE USER ' || NEW.idfy || ' WITH PASSWORD ' || quote_literal(new.passwd);
 
 END IF;
RETURN NULL;
END ;
$BODY$
  LANGUAGE plpgsql;
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 15h08   #3
Nouveau Membre du Club
 
Homme
Inscription : mars 2004
Messages : 125
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 125
Points : 28
Points : 28
Nickel ça fonctionne

Merci bcp punkoff
pony99 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h49.


 
 
 
 
Partenaires

Hébergement Web