Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
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 30/06/2005, 11h14   #1
Membre habitué
 
Avatar de Tchinkatchuk
 
Homme Sylvain Gourvil
Freelance en développement Web
Inscription : mars 2005
Messages : 248
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Gourvil
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Freelance en développement Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2005
Messages : 248
Points : 141
Points : 141
Par défaut Procedures stockée et séquence

Bonjour tout le monde !

J'ai un probleme de sequence dans une procedure stockée

Voici mon code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
DECLARE identifiant ALIAS FOR $1;
DECLARE r  record;
BEGIN
	SELECT INTO r * FROM inscription_temp WHERE id_ins = identifiant;
 
	INSERT INTO francais (id_antiquaire, nom_antiquaire, nom_boutique, adresse_boutique, id_village, telephone, email, site, date_saisie, no_departement) 
		VALUES (NEXTVAL('francais_id_antiquaire_seq'), r.nom || ' ' || r.prenom, r.nom_boutique, r.adresse, r.id_village, r.telephone, r.email, r.site, r.date_ins, r.departement);
 
	IF r.spec1 IS NULL THEN
	ELSE
		INSERT INTO boutique_specialites VALUES (r.spec1, currval('francais_id_antiquaire_seq'), 1);
	END IF;
 
	IF r.spec2 IS NULL THEN
	ELSE
		INSERT INTO boutique_specialites VALUES (r.spec2, currval('francais_id_antiquaire_seq'), 2);
	END IF;
 
	IF r.spec3 IS NULL THEN
	ELSE
		INSERT INTO boutique_specialites VALUES (r.spec3, currval('francais_id_antiquaire_seq'), 3);
	END IF;
 
	DELETE FROM inscription_temp WHERE id_ins = identifiant;
 
	RETURN 0;
END;
En fait lors de l'appel, la contrainte de clé primaire sur la table francais (1ere insertion) se declenche. Donc il ne me prend pas la prochaine valeur de la séquence (7002) car mon plus gros id_antiquaire est 6800 !!

Quelqu'un aurait-il une explication, SVP ?

Merci beaucoup d'avance.
Tchinkatchuk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2005, 22h51   #2
Invité de passage
 
Inscription : janvier 2004
Messages : 11
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 11
Points : 4
Points : 4
regarde ce tuttorial sur les sequences http://dgriessinger.developpez.com/postgresql/sequences/#LVII
et à propos de ton code :
soit tu utilises un trigger qui va te permettre qui va mettre ta cle primaire à la bonne valeur, soit tu le fais toi meme.
feutchue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2005, 09h20   #3
Membre habitué
 
Avatar de Tchinkatchuk
 
Homme Sylvain Gourvil
Freelance en développement Web
Inscription : mars 2005
Messages : 248
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Gourvil
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Freelance en développement Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2005
Messages : 248
Points : 141
Points : 141
ok, je te remercie, je vais voir ca !
Tchinkatchuk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h56.


 
 
 
 
Partenaires

Hébergement Web