SQL para actualizar datos

InfoWorks WS Pro incluye las palabras clave de SQL SET y UPDATE que permiten modificar los datos de red mediante una expresión SQL.

Consulte Sintaxis SQL para obtener más información sobre palabras clave.

Consulte la sección Ejemplos de SQL para obtener más ejemplos del uso de SQL en InfoWorks WS Pro.

Actualización del tipo de objeto activo

La palabra clave SET se puede utilizar de forma independiente o en combinación con una subcláusula WHERE para actualizar el tipo de objeto activo elegido en el campo Tipo de objeto del cuadro de diálogo SQL.

La sintaxis es la siguiente:

Uso de la palabra clave SET

SET 
  <assignment>

Ejemplo 1

SET 
  user_text_1 = "text"

establece el campo user_text_1 como texto para todos los objetos del tipo de objeto elegido (seleccionado en el campo Tipo de objeto del cuadro de diálogo SQL).

Ejemplo 2

Separe varias asignaciones en la misma instrucción mediante comas, por ejemplo:

SET 
  user_text_1 = "text", 
  user_number_1 = x

establece el campo user_text_1 en texto y el campo user_number_1 en el valor del campo x para todos los objetos del tipo de objeto elegido.

Uso de SET y WHERE

SET 
  <assignment> 
 WHERE <conditional expression>

Ejemplo 1

SET 
  user_number_1 = 1 
 WHERE x > 100000

establece el campo user_number_1 en 1 para todos los objetos del tipo de objeto elegido con coordenada x mayor que 100 000.

Ejemplo 2

Separe varias asignaciones en la misma instrucción mediante comas, por ejemplo,

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

establece los campos user_number_1 en 1 y user_number_2 en 2 para todos los objetos del tipo de objeto elegido con coordenada x mayor que 100 000.

Ejemplo 3

Separe varias instrucciones con punto y coma, por ejemplo:

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

SET 
  user_number_3 = 3; 

establece user_number_1 en 1 y user_number_2 en 2 para todos los objetos del tipo de objeto elegido con coordenada x mayor que 100 000 y establece user_number 3 en 3 para todos los objetos del tipo de objeto elegido.

Actualización de valores de una matriz

Para actualizar los valores de una matriz dentro de un objeto:

SET 
  <array name.array fieldname> = <expression>
Nota: Consulte Datos SQL y de matriz para obtener más información sobre el uso de consultas SQL con matrices.

Ejemplo 1

SQL query context:
  • Tipo de objeto: tubería
SET 
  diameter = 300 
 WHERE diameter_flag = 'CH'; 

SET 
  length = 10 
 WHERE length < 10

La primera pieza establece un diámetro de 300 para todas las tuberías en las que la etiqueta de datos en diámetro de tubería está establecido en "CH". La segunda parte establece una longitud mínima de 10 m para todas las tuberías de menos de 10 m de longitud.

Ejemplo 2

SQL query context:
  • Tipo de objeto: nodo
  • [Espacial] Tipo de búsqueda: cruce
  • [Espacial] Tipo de capa: capa GIS
  • [Espacial] Capa: [SHP] carreteras
SET 
  user_text_5 = gislayer.AREA

De este modo, se establecerá el campo user_text_5 e cualquier nodo dentro de un polígono GIS en la capa GIS "Carreteras" en el valor del campo "ÁREA" del polígono GIS.

Importante: Este ejemplo utiliza la funcionalidad de búsqueda espacial en SQL, concretamente la funcionalidad de búsqueda implícita al definir opciones de búsqueda espacial en el cuadro de diálogo de SQL. Consulte Búsquedas SQL y espaciales para obtener más información sobre la inclusión de capas de red y GIS en segundo plano en consultas SQL.

Actualización de un tipo de objeto diferente

La palabra clave UPDATE se utiliza junto con las palabras clave SET y WHERE para actualizar objetos de uno o más tipos; no necesariamente el tipo seleccionado en la lista Tipo de objeto del cuadro de diálogo SQL.

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

Separe varias asignaciones en la misma instrucción mediante comas y separe varias instrucciones mediante punto y coma, como se describe en la sección Actualización del tipo de objeto activo anterior.

Ejemplo 1

UPDATE [All Links] SET 
  user_text_1 = "text"

establece el campo user_text_1 en texto para todos los objetos de vínculo.

Ejemplo 2

UPDATE node SET 
  user_number_1 = 1 
 WHERE x > 100000

establece el campo user_number_1 en 1 para los objetos de nodo con coordenada x mayor que 100000.