Aktualizacja, wstawianie i znak ? w DBEXECUTE
?
.Powiedzmy, że mamy pustą tabelę SQL o nazwie Items, która zawiera dwie kolumny: Identyfikator i Nazwa. Identyfikator jest kluczem podstawowym.
W niechronionej komórce znajduje się następująca formuła:
=DBEXECUTE("configdb", "SELECT items.id,items.name FROM items WHERE ID=1","INSERT into items (ID,Name) VALUES (1,?)")
W trybie widoku należy wpisać 1 w tej komórce i nacisnąć klawisz Enter.
Ponieważ tabela jest pusta i nie zawiera identyfikatora o wartości 1, zostaje wykonana instrukcja Insert. Instrukcja ta tworzy następujący wiersz w tabeli:
Numer wiersza | ID | Nazwa |
---|---|---|
1 | 1 | 1 |
Wprowadzając wartość 1, użytkownik określił identyfikator. Znak ?
sprawia, że wartość ta zostaje wprowadzona w kokumnie Nazwa.
Teraz wpisz wartość 2 w komórce. Jako że istnieje już identyfikator 1, nie zostanie wykonana instrukcja Insert. Zamiast tego wiersz zawierający identyfikator 1 zostanie zaktualizowany w sposób pokazany w poniższej tabeli:
Numer wiersza | ID | Nazwa |
---|---|---|
1 | 2 | 1 |
Ponieważ instrukcja Insert nie została wykonana, kolumna Nazwa nie została zaktualizowana.
Teraz wpisz wartość 3 w komórce. Jako że nie ma identyfikatora 1, następuje wykonanie instrukcji Insert i dodanie nowego wiersza:
Numer wiersza | ID | Nazwa |
---|---|---|
1 | 1 | 3 |
2 | 2 | 1 |
Wartości 1 i 3 są wynikiem tej części formuły: VALUES (1,?)
.
Gdyby teraz wpisano 4, identyfikator 1 znów byłby obecny i nastąpiłaby aktualizacja wiersza zawierającego identyfikator 1.
Numer wiersza | ID | Nazwa |
---|---|---|
1 | 2 | 1 |
2 | 4 | 3 |
Jeśli zostanie wpisana wartość 5, nastąpi dodanie kolejnego wiersza:
Numer wiersza | ID | Nazwa |
---|---|---|
1 | 1 | 5 |
2 | 2 | 1 |
3 | 4 | 3 |