Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes 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 27/10/2011, 16h38   #1
Invité de passage
 
Femme
Inscription : octobre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : octobre 2011
Messages : 2
Points : 0
Points : 0
Par défaut [SQL Server 2008] Problème lors de plusieurs UPDATE à la suite : le 2nd annule le premier

Bonjour à tous !

Je suis novice en Transact-SQL et je bloque sur un problème.

Je souhaite corriger le contenu d'un champ (texte) de l'une de mes tables.
J'ai un champ nommé "VOIE" avec des noms de rue. J'ai créé un nouveau champ nommé "VOIE_NORM" avec le même contenu que "VOIE".
Le champs "VOIE" et "VOIE_NORM" contiennent des noms de rue, par ex. 'BD ST MARTIN'.
Je souhaite corriger le contenu du champ "VOIE_NORM". En reprenant mon exemple, je veux transformer les 'BD ' en 'BOULEVARD ' et transformer les 'ST ' en 'SAINT-'

J'utilise un UPDATE pour ça, voici la première requete que j'ai lancée :
Code :
1
2
3
4
5
	BEGIN TRAN boulevards;
	UPDATE [BD_AD_V1].[dbo].[TAB_ADR_V2]
	SET VOIE_NORM = REPLACE(VOIE, 'BD ', 'BOULEVARD ')
	WHERE VOIE like 'BD%';
	COMMIT TRAN boulevards;
> Une fois que cet Update est exécuté, je vérifie et tout est OK, ma transformation des 'BOULEVARD' s'est bien passée : J'ai 'BOULEVARD ST MARTIN'

J’exécute ensuite un 2nd Update :
Code :
1
2
3
4
5
6
	BEGIN TRAN saints;
	UPDATE [BD_AD_V1].[dbo].[TAB_ADR_V2]
	SET VOIE_NORM = REPLACE(VOIE, ' ST ', ' SAINT-')
	WHERE VOIE like '% ST %';
	COMMIT TRAN saints;
> Je vérifie, et là le 'ST' s'est bien transformés en 'SAINT-' mais le 'BOULEVARD' est redevenu 'BD'. Mon premier UPDATE a été annulé !

J'ai également essayé cette version de requête mais ça ne marche pas mieux niveau correctifs (l'update précédent est annulé) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
	BEGIN TRAN voies;
	UPDATE [BD_AD_V1].[dbo].[TAB_ADR_V2]
	SET VOIE_NORM = REPLACE(VOIE, 'BD ', 'BOULEVARD ')
	WHERE VOIE like 'BD%';
	UPDATE [BD_AD_V1].[dbo].[TAB_ADR_V2]
	SET VOIE_NORM = REPLACE(VOIE, 'BVD ', 'BOULEVARD ')
	WHERE VOIE like 'BVD %';
	UPDATE [BD_AD_V1].[dbo].[TAB_ADR_V2]
	SET VOIE_NORM = REPLACE(VOIE, ' ST ', ' SAINT-')
	WHERE VOIE like '% ST %';
	COMMIT TRAN voies;
Est-ce que quelqu'un pourrait m'éclairer sur ce problème ? J'ai peut être oublié certaines choses dans mes requêtes mais je ne vois pas où (aucune erreur ne m'est renvoyé dans mon résultat de requête), là je bloque totalement !

Merci d'avance pour votre aide.
RiNeEd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 16h45   #2
Candidat au titre de Membre du Club
 
Étudiant
Inscription : mars 2010
Messages : 17
Détails du profil
Informations personnelles :
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2010
Messages : 17
Points : 10
Points : 10
Comme ça rapidement, il manquerait pas les GO ?
Code :
1
2
3
4
5
6
7
 
BEGIN TRAN boulevards;
UPDATE [BD_AD_V1].[dbo].[TAB_ADR_V2]
SET VOIE_NORM = REPLACE(VOIE, 'BD ', 'BOULEVARD ')
WHERE VOIE LIKE 'BD%';
COMMIT TRAN boulevards;
GO
djmoumout est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 17h19   #3
Invité de passage
 
Femme
Inscription : octobre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : octobre 2011
Messages : 2
Points : 0
Points : 0
Merci pour cette réponse rapide

Un GO n'y change rien j'ai toujours le même problème...

Une autre proposition ?
RiNeEd 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 05h47.


 
 
 
 
Partenaires

Hébergement Web