Actualizar, insertar y el carácter ? en DBEXECUTE

En este tema se describe el comportamiento de actualización e inserción de DBEXECUTE y el uso del carácter ? .

Imagine que tiene una tabla SQL vacía llamada Elementos, con dos columnas: Id. y Nombre. Id. es la clave primaria.

Tiene esta fórmula en una celda desprotegida:

=DBEXECUTE("configdb", "SELECT items.id,items.name FROM items WHERE ID=1","INSERT into items (ID,Name) VALUES (1,?)")

En modo Vista, especifique 1 en la celda y pulse Intro.

Como la tabla está vacía y no contiene un id. con el valor 1, se ejecuta la instrucción INSERT. La instrucción INSERT crea esta fila en la tabla:

Número de fila Id. Nombre
1 1 1

Al introducir 1, ha especificado el id. El carácter ? hace que este valor se introduzca en la columna Nombre.

Ahora especifique 2 en la celda. Dado que el id. 1 está presente, la instrucción INSERT no se ejecuta. En su lugar, la fila que contiene el id. 1 se actualiza según se muestra en esta tabla:

Número de fila Id. Nombre
1 2 1

Debido a que la instrucción INSERT no se ejecuta, la columna Nombre no se actualiza.

Ahora especifique 3 en la celda. Como el id. 1 no está presente, se ejecuta la instrucción INSERT y se añade una fila nueva:

Número de fila Id. Nombre
1 1 3
2 2 1

Los valores 1 y 3 se derivan de esta parte de la fórmula: VALORES (1,?).

Si ahora especifica 4, el id. 1 está presente de nuevo y se actualiza la fila que contiene el id. 1.

Número de fila Id. Nombre
1 2 1
2 4 3

Si especifica 5 se añade una fila adicional:

Número de fila Id. Nombre
1 1 5
2 2 1
3 4 3