1 vtable.update
<vtable.update
name='name'
row='row'
where='where'
>
<column name='name'> *
<value /> !
</column>
</vtable.update>
Attributes | |||||
---|---|---|---|---|---|
Name | Type | Required | Default | Description | |
Aname | string | Nombre de la tabla virtual. | |||
Arow | int | Número del registro a actualizar. | |||
Awhere | String | Condición de igualdad de una o más columnas del vtable, en sintaxis UEL. La actualización se aplica a todos los registros del vtable que cumplen con la condición indicada en el atributo. |
Arguments | |||||
---|---|---|---|---|---|
Name | Type | Required | Unique | Nullable | Description |
Ecolumn | Modifica el valor de la columna indicada. | ||||
Aname | string | Nombre de la columna. | |||
Evalue | string |
Returns | |
---|---|
Type | Description |
vtable | El propio objeto. |
Exceptions
attribute name required
No se ha especificado el nombre del campo de la tabla.
vtable name required
No se ha especificado el nombre de la vtable.
missing columns for vtable update
No se ha indicado ninguna columna para actualizar su valor.
Remarks
El atributo row es opcional, debido a que en ciertas situaciones puede no ser necesario,por ejemplo, en el contexto de un cursor. En el cuerpo de un <foreach> , en tanto que las acciones afectan al registro actual (que se está procesando), no tendría sentido hacer uso del atributo row.
<xsql-script name='vtable_update_sample1'> <body> <vtable name='personas'> <column name='dni' type='string' unique='true' /> <column name='nombre' type='string' /> <column name='apellido1' type='string' /> <column name='apellido2' type='string' /> </vtable> <vtable.insert name='personas'> <string>46352700Z</string> <string>John</string> <string>Smith</string> <string>Simpson</string> </vtable.insert> <println> <vtable.update name='personas' row='0'> <column name='nombre'>George</column> </vtable.update> </println> </body> </xsql-script>
Se genera una tabla virtual de nombre personas, compuesta de cuatro columnas de tipo string: dni, nombre, apellido1 y apellido2.Posteriormente, se le inserta un registro. Con el elemento <vtable.update> se actualiza el contenido de la columna nombre ( <column name='nombre'>) del primer y único registro( row='0').
Actualización utilizando el atributo where
<xsql-script name='vtable_where'> <body> <vtable name='personas'> <column name='dni' type='string' unique='true' /> <column name='nombre' type='string' /> <column name='apellido1' type='string' /> <column name='apellido2' type='string' /> </vtable> <vtable.insert name='personas'> <string>46352700Z</string> <string>John</string> <string>Smith</string> <string>Simpson</string> </vtable.insert> <vtable.insert name='personas'> <string>49352110X</string> <string>David</string> <string>Robert</string> <string>Jones</string> </vtable.insert> <vtable.insert name='personas'> <string>46282627B</string> <string>John</string> <string>Frederick</string> <string>Herschel</string> </vtable.insert> <println>Partimos de los siguientes datos</println> <println> <personas /> </println> <println>Cambiamos el segundo apellido de las entrados con nombres empezados con 'J'</println> <vtable.update name='personas' where="fn:startsWith(nombre, 'J')"> <column name='apellido2'>xxxxxxx</column> </vtable.update> <println> <personas /> </println> <println>Borramos las entrados con nombres empezados con 'D'</println> <vtable.delete name='personas' where="fn:startsWith(nombre, 'D')" /> <println> <personas /> </println> </body> </xsql-script>
Se genera una tabla virtual de nombre personas, compuesta de cuatro columnas de tipo string: dni, nombre, apellido1 y apellido2. Tras añadir a tabla virtual 3 registros, se cambia el valor del nombre de todas las personas llamadas "John" y se pasan a llamar "James".
startsWith
Se puede usar la función fn:startsWith para filtrar registros de una vtable cuyos valores de la columna indicada, comienzan con un patrón determinado:
<vtable.update name='personas' where="fn:startsWith(nombre, 'J')"> <column name='nombre'>James</column> </vtable.update>
Actualización utilizando el atributo where para encontrar los registros con un campo nulo.
<xsql-script name='vtable_update_where_null'> <body> <vtable name='personas'> <column name='dni' type='string' unique='true' /> <column name='nombre' type='string' /> <column name='apellido1' type='string' /> <column name='apellido2' type='string' /> <column name='apellido3' type='string' /> </vtable> <vtable.insert name='personas'> <string>46352700Z</string> <string>John</string> <string>Smith</string> <string>Simpson</string> <null /> </vtable.insert> <println> <vtable.update name='personas' where="isNullOrEmpty(apellido3)"> <column name='nombre'>George</column> </vtable.update> </println> </body> </xsql-script>