SQL per l'aggiornamento dei dati

In InfoWorks WS Pro sono incluse le parole chiave SQL SET e UPDATE, che consentono di modificare i dati di rete utilizzando un'espressione SQL.

Per ulteriori informazioni sulle parole chiave, vedere Sintassi SQL.

Per ulteriori esempi di utilizzo di SQL in InfoWorks WS Pro, vedere la sezione Esempi di SQL.

Aggiornamento del tipo di oggetto corrente

La parola chiave SET può essere usata da sola o assieme ad una sottoclausola WHERE per aggiornare il tipo di oggetto corrente scelto nel campo Tipo di oggetto della finestra di dialogo SQL.

La sintassi è la seguente:

Utilizzo della parola chiave SET

SET 
  <assignment>

Esempio 1

SET 
  user_text_1 = "text"

viene impostato il campo user_text_1 su testo per tutti gli oggetti del tipo di oggetto scelto (selezionato nel campo Tipo di oggetto della finestra di dialogo SQL).

Esempio 2

Separare più assegnazioni nella stessa istruzione mediante virgole, ad esempio:

SET 
  user_text_1 = "text", 
  user_number_1 = x

Imposta il campo user_text_1 su testo e il campo user_number_1 sul valore nel campo x per tutti gli oggetti del tipo di oggetto scelto.

Utilizzo di SET e WHERE

SET 
  <assignment> 
 WHERE <conditional expression>

Esempio 1

SET 
  user_number_1 = 1 
 WHERE x > 100000

imposta il campo user_number_1 su 1 per tutti gli oggetti del tipo di oggetto scelto con coordinata x maggiore di 100000.

Esempio 2

Separare più assegnazioni nella stessa istruzione mediante virgole, ad esempio

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

imposta i campi user_number_1 su 1 e user_number_2 su 2 per tutti gli oggetti del tipo di oggetto scelto con coordinata x maggiore di 100000.

Esempio 3

Separare più istruzioni mediante punti e virgola, ad esempio

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

SET 
  user_number_3 = 3; 

Imposta user_number_1 su 1 e user_number_2 su 2 per tutti gli oggetti del tipo di oggetto scelto con coordinata x maggiore di 100000 e imposta user _number 3 su 3 per tutti gli oggetti del tipo di oggetto scelto.

Aggiornamento dei valori all'interno di un array

Come aggiornare i valori in un array all'interno di un oggetto:

SET 
  <array name.array fieldname> = <expression>
Nota: Per ulteriori informazioni sull'utilizzo delle query SQL con array, vedere SQL e dati array.

Esempio 1

SQL query context:
  • Tipo di oggetto: Condotta
SET 
  diameter = 300 
 WHERE diameter_flag = 'CH'; 

SET 
  length = 10 
 WHERE length < 10

La prima parte imposta un diametro di 300 per tutte le condotte in cui il flag di dati sul diametro della condotta è impostato su "CH". La seconda parte imposta una lunghezza minima di 10 m per tutte le condotte di lunghezza inferiore a 10 m.

Esempio 2

SQL query context:
  • Tipo di oggetto: nodo
  • Tipo di ricerca [spaziale]: trasversale
  • Tipo di layer [spaziale]: layer GIS
  • Layer [spaziale]: [SHP] Roads
SET 
  user_text_5 = gislayer.AREA

Questo imposterà il campo user_text_5 di qualsiasi nodo all'interno di un poligono GIS nel layer GIS "Roads" sul valore del campo "AREA" del poligono GIS.

Importante: In questo esempio viene utilizzata la funzionalità di ricerca spaziale in SQL, in particolare la funzionalità di ricerca implicita durante la definizione delle opzioni di ricerca spaziale nella finestra di dialogo SQL. Vedere Ricerche SQL e spaziali per ulteriori informazioni sull'inclusione di layer di rete e di GIS in background nelle query SQL.

Aggiornamento di un tipo di oggetto diverso

La parola chiave UPDATE viene utilizzata insieme alle parole chiave SET e WHERE per aggiornare oggetti di uno o più tipi, non necessariamente del tipo selezionato nell'elenco Tipo di oggetto della finestra di dialogo SQL.

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

Separare le assegnazioni multiple nella stessa istruzione mediante virgole e separare le istruzioni multiple mediante un punto e virgola come descritto nella sezione Aggiornamento del tipo di oggetto corrente.

Esempio 1

UPDATE [All Links] SET 
  user_text_1 = "text"

viene impostato il campo user_text_1 su testo per tutti gli oggetti di collegamento.

Esempio 2

UPDATE node SET 
  user_number_1 = 1 
 WHERE x > 100000

Imposta il campo user_number_1 su 1 per gli oggetti nodo con coordinata x maggiore di 100000.