Atualizar, inserir e o caractere ? em DBEXECUTE
?
.Suponha você tenha uma tabela SQL vazia chamada Itens com duas colunas: ID e Nome. ID é a chave primária.
Você tem essa fórmula em uma célula desprotegida:
=DBEXECUTE("configdb", "SELECT items.id,items.name FROM items WHERE ID=1","INSERT into items (ID,Name) VALUES (1,?)")
No modo de Exibição, você especifica 1 na célula e pressiona Enter.
Como a tabela está vazia e não contém uma ID com o valor 1, a instrução Inserir é executada. A instrução Insert cria esta linha na tabela:
Número da linha | ID | Nome |
---|---|---|
1 | 1 | 1 |
Ao inserir 1, você especificou a ID. O caractere ?
faz com que esse valor seja inserido na coluna Nome.
Agora, você especifica 2 na célula. Como a ID 1 está presente, a instrução Inserir não é executada. Em vez disso, a linha que contém o ID 1 é atualizada conforme mostrado nesta tabela:
Número da linha | ID | Nome |
---|---|---|
1 | 2 | 1 |
Como a instrução Inserir não é executada, a coluna Nome não é atualizada.
Agora, você especifica 3 na célula. Como a ID 1 não está presente, a instrução Inserir é executada e uma nova linha é adicionada:
Número da linha | ID | Nome |
---|---|---|
1 | 1 | 3 |
2 | 2 | 1 |
Os valores 1 e 3 resultam desta parte da fórmula: VALUES (1,?)
.
Se você especificar 4, a ID 1 estará presente outra vez e a linha que contém a ID 1 será atualizada.
Número da linha | ID | Nome |
---|---|---|
1 | 2 | 1 |
2 | 4 | 3 |
Se você especificar 5, será adicionada mais uma linha:
Número da linha | ID | Nome |
---|---|---|
1 | 1 | 5 |
2 | 2 | 1 |
3 | 4 | 3 |