Opdatering indsættelse og tegnet ? i DBEXECUTE

I dette emne beskrives adfærden ved opdatering og indsættelse i DBEXECUTE samt brugen af tegnet ? .

Lad os sige, at du har en tom SQL-tabel med navnet Elementer, der har to kolonner: Id og navn. Id er den primære nøgle.

Du har denne formel i en ubeskyttet celle:

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

I visningstilstand indtaster du værdien 1 i cellen og trykker på Enter.

Da tabellen er tom og ikke indeholder et id med værdien 1, udføres Indsæt-sætningen. Indsæt-sætningen opretter denne række i tabellen:

Rækkenummer Id Navn
1 1 1

Ved at indtaste 1 har du angivet id'et. Tegnet ? forårsager, at denne værdi angives i kolonnen Navn.

Du angiver nu 2 i cellen. Da Id 1 allerede findes, udføres Indsæt-sætningen ikke. I stedet opdateres den række, der indeholder Id 1 som vist i denne tabel:

Rækkenummer Id Navn
1 2 1

Da Indsæt -sætningen ikke udføres, opdateres kolonnen Navn ikke.

Du indtaster nu 3 i cellen. Da Id 1 ikke findes, udføres Indsæt-sætningen, og der tilføjes en ny række:

Rækkenummer Id Navn
1 1 3
2 2 1

Værdierne 1 og 3 stammer fra denne del af formlen: VALUES (1,?).

Hvis du nu indtaster 4, findes Id 1 igen, og rækken med Id 1 opdateres.

Rækkenummer Id Navn
1 2 1
2 4 3

Hvis du indtaster 5, tilføjes der endnu en række:

Rækkenummer Id Navn
1 1 5
2 2 1
3 4 3