Actualizar, insertar y el carácter ? en DBEXECUTE
?
.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 |