[Résolu : rien à voir] Mettre à jour une colonne à partir d'une autre

Mettre à jour une colonne à partir d'une autre [Résolu : rien à voir] - SQL/NoSQL - Programmation

Marsh Posté le 09-06-2011 à 15:31:47    

Salut,  
 
ça me paraît extrêmement simple et pourtant ça ne fonctionne pas :  :heink:  
 
Je veux simplement indiquer urgency = 3 dans toutes les lignes où priority = 7.
 

Code :
  1. update bugs
  2. set urgency = 3
  3. where bg_priority = 7


Code :
  1. update bugs
  2. set urgency = 3
  3. where bg_id in (select bg_id from bugs where bg_priority = 7)


 
Dans les 2 cas j'obtiens le message "Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression."
 
Qu'est-ce que je fais mal ?  :sweat:
 
Edit : c'est du T-SQL (SQL Server)


Message édité par Peanuty le 09-06-2011 à 18:13:42
Reply

Marsh Posté le 09-06-2011 à 15:31:47   

Reply

Marsh Posté le 09-06-2011 à 16:34:19    

Les requêtes sont bonnes, surtout la première qui est très simple et qui devrait passer.
 
Le problème doit se situer ailleurs. D'ailleurs, le message parle de subquery qui suit un signe "=" ou ">"... alors qu'il n'y a pas cela.
Je soupçonne un guillemet mal fermé quelque part, un problème de parenthèse un peu avant, ou un caractère indésirable dans l'une des lignes de la requête.

Reply

Marsh Posté le 09-06-2011 à 17:21:01    

En fait quand je teste

Code :
  1. update bugs
  2. set urgency = 3
  3. where bg_id = 665
  4. --where bg_priority = 7

ça marche, mais dans ce cas de figure le WHERE ne retourne qu'une ligne.
 
En revanche avec

Code :
  1. update bugs
  2. set urgency = 3
  3. where bg_id = 665 or bg_id = 679
  4. --where bg_priority = 7

où le WHERE retourne 2 lignes (comme avec bg_priority = 7), j'ai à nouveau l'erreur.
 
donc le problème a bien l'air de se situer à ce niveau...  :??:

Reply

Marsh Posté le 09-06-2011 à 17:34:25    

Déjà, la requête est différente de celle qui était montrée initialement, car il y a une ligne de commentaire.
Or il arrive que certaines lignes de commentaire posent des problèmes avec certaines versions du moteur SQL (par exemple j'ai eu des problèmes autrefois quand une ligne de commentaire était mise au début).
 
Donc, s'il vous plait, pour avancer, postez-nous votre requête SQL exacte, et je pense qu'on trouvera l'apostrophe ou la parenthèse, ou l'autre truc qui pose le problème.


Message édité par olivthill le 09-06-2011 à 17:35:08
Reply

Marsh Posté le 09-06-2011 à 17:44:59    

Les commentaires ? Ah bon ?! OK, je vais récupérer la requête exacte.
 
(La ligne en commentaire, c'est celle de la requête d'origine que j'ai commentée pour faire les 2 tests suivants.)


Message édité par Peanuty le 09-06-2011 à 17:45:54
Reply

Marsh Posté le 09-06-2011 à 17:48:42    

En fait ça doit être un problème de structure ou de paramètrage : j'ai 2 instances SQL Server qui sont censées (!) être identiques, mais pas avec les mêmes données, et la requête initiale fonctionne sur la 2e !


Message édité par Peanuty le 09-06-2011 à 18:02:07
Reply

Marsh Posté le 09-06-2011 à 17:55:48    

Quand je génère le script de création de la table bugs, la seule différence que je vois est "SET ANSI_PADDING ON" en plus dans la base où ça ne fonctionne pas.

Reply

Marsh Posté le 09-06-2011 à 18:13:11    

J'ai trouvé ! Il y a un trigger qui a été ajouté sur l'une des 2 bases et qui bloque la mise à jour !  :bounce:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed