SQL pour la mise à jour des données

InfoWorks WS Pro comprend les mots-clés SQL SET et UPDATE qui permettent de modifier les données réseau à l’aide d’une expression SQL.

Pour en savoir plus sur les mots-clés, voir la rubrique Syntaxe SQL.

Voir les rubriques Exemples SQL pour obtenir des exemples supplémentaires sur l’utilisation de SQL dans InfoWorks WS Pro.

Mise à jour du type d’objet actuel

Le mot-clé SET peut être utilisé seul ou conjointement avec une sous-clause WHERE pour mettre à jour le type d’objet choisi dans le champ Type d’objet de la boîte de dialogue SQL.

La syntaxe est la suivante :

Utilisation du mot-clé SET

SET 
  <assignment>

Exemple 1

SET 
  user_text_1 = "text"

définit le champ user_text_1 sur du texte pour tous les objets du type d’objet choisi (sélectionné dans le champ Type d’objet de la boîte de dialogue SQL).

Exemple 2

Séparez les affectations multiples d’une même instruction par des virgules, par exemple :

SET 
  user_text_1 = "text", 
  user_number_1 = x

définit le champ user_text_1 sur du texte et le champ user_number_1 sur la valeur du champ x pour tous les objets du type d’objet choisi.

Utilisation de SET et WHERE

SET 
  <assignment> 
 WHERE <conditional expression>

Exemple 1

SET 
  user_number_1 = 1 
 WHERE x > 100000

définit le champ user_number_1 sur 1 pour tous les objets du type choisi avec une coordonnée x supérieure à 100000.

Exemple 2

Séparez les affectations multiples d’une même instruction par des virgules, par exemple

SET 
  user_number_1 = 1, 
  user_number_2 = 2 
 WHERE x > 100000

Définit les champs user_number_1 sur 1 et user_number_2 sur 2 pour tous les objets du type d’objet choisi dont la coordonnée x est supérieure à 100000.

Exemple 3

Séparez les instructions multiples par des points-virgules, par exemple

SET 
  user_number_1 = 1, 
  user_number_2 = 2 
 WHERE x > 100000; 

SET 
  user_number_3 = 3; 

définit user_number_1 sur 1 et user_number_2 sur 2 pour tous les objets du type d’objet choisi avec une coordonnée x supérieure à 100000 et définit user_number 3 sur 3 pour tous les objets du type d’objet choisi.

Mise à jour des valeurs d’un tableau

Pour mettre à jour les valeurs d’un tableau dans un objet :

SET 
  <array name.array fieldname> = <expression>
Remarque : Pour en savoir plus sur l’utilisation des requêtes SQL avec les tableaux, voir la rubrique SQL et données de tableau.

Exemple 1

SQL query context :
  • Type d’objet : Canalisation
SET 
  diameter = 300 
 WHERE diameter_flag = 'CH'; 

SET 
  length = 10 
 WHERE length < 10

La première partie définit un diamètre de 300 pour toutes les canalisations pour lesquelles l’indicateur de données sur le diamètre de la canalisation est défini sur « CH ». La deuxième partie fixe une longueur minimale de 10 m pour toutes les canalisations de moins de 10 m de long.

Exemple 2

SQL query context :
  • Type d’objet : Nœud
  • Type de recherche [Spatial] : Cross
  • Type de couche [Spatial] : Couche SIG
  • Couche [Spatial] : Routes [SHP]
SET 
  user_text_5 = gislayer.AREA

Cette opération définit le champ user_text_5 de tous les nœuds à l’intérieur d’un polygone SIG de la couche SIG « Routes » sur la valeur du champ « AREA » du polygone SIG.

Important : cet exemple utilise la fonctionnalité de recherche spatiale dans SQL, en particulier la fonctionnalité de recherche implicite lors de la définition des options de recherche spatiale dans la boîte de dialogue SQL. Pour en savoir plus sur l’ajout de couches de réseau en arrière-plan et de couches SIG, voir la rubrique SQL et recherches spatiales dans les requêtes SQL.

Mise à jour d’un autre type d’objet

Le mot-clé UPDATE est utilisé conjointement avec les mots-clés SET et WHERE pour mettre à jour les objets d’un ou de plusieurs types. Il ne s’agit pas nécessairement du type sélectionné dans la liste Type d’objet de la boîte de dialogue SQL.

UPDATE <object type> SET 
  <assignment>
UPDATE <object type> SET 
  <assignment> 
 WHERE <conditional expression>

Séparez les affectations multiples d’une même instruction par des virgules et les instructions multiples par des points-virgules, comme décrit dans la section Mise à jour du type d’objet actuel ci-dessus.

Exemple 1

UPDATE [All Links] SET 
  user_text_1 = "text"

définit le champ user_text_1 sur du texte pour tous les objets liens.

Exemple 2

UPDATE node SET 
  user_number_1 = 1 
 WHERE x > 100000

définit le champ user_number_1 sur 1 pour les objets nœuds avec une coordonnée x supérieure à 100000.