UPDATE
Jetzt können wir Daten einfügen und lesen. Aber was ist, wenn wir bereits eingefügte Daten aktualisieren wollen?
Hier kommt die UPDATE
-Anweisung zum Einsatz.
Um Daten zu aktualisieren, müssen wir auch die WHERE
-Klausel verwenden, die im vorherigen Kapitel eingeführt wurde.
Erinnere dich an unsere bereits gut bekannte Tabelle mit den Spielern.
id | player_name | last_online |
---|---|---|
1 | Mike | 2022-05-11 00:00:00.000000 |
2 | Sarah | 2022-04-04 00:00:00.000000 |
3 | John | 2022-04-08 00:00:00.000000 |
4 | Lilly | 2022-04-01 00:00:00.000000 |
5 | Matthias | 2022-03-06 00:00:00.000000 |
6 | Lenny | 2022-03-08 00:00:00.000000 |
7 | Summer | 2022-05-22 00:00:00.000000 |
8 | Marry | 2022-06-04 00:00:00.000000 |
9 | Milana | 2022-02-12 00:00:00.000000 |
10 | Lexi | 2022-02-22 00:00:00.000000 |
In der Spalte last_online
wird das letzte Mal gespeichert, als der Spieler online war.
Wenn Lexy wieder online ist, müssen wir den Wert für last_online
aktualisieren.
Wir haben jetzt zwei Möglichkeiten.
Die erste ist, den Eintrag zu löschen und einen neuen einzufügen.
Das ist sehr unsauber und auch keine gute Praxis.
Deshalb verwenden wir die UPDATE
-Anweisung und legen in der WHERE
-Klausel fest, wo wir aktualisieren wollen und was wir aktualisieren wollen.
Die allgemeine Syntax lautet:
Grundlegende Aktualisierung
Mit diesem Wissen wollen wir nun versuchen, die last_login
-Zeit von Lexy anhand ihrer id
10
auf die aktuelle Zeit zu aktualisieren.
Wir brauchen wieder eine integrierte Funktion, um die aktuelle Zeit zu ermitteln.
- SqLite:
CAST(STRFTIME('%s', 'NOW') AS INTEGER)
Wir haben keine Zeitstempel. Wir verwenden die aktuelle Zeit als Unix-Timestamp. - MariaDB/MySQL:
current_timestamp()
gibt den aktuellen Zeitstempel zurück. Du kannst auch nurcurrent_timestamp
verwenden, das ist eine Konstante für die aktuelle Transaktion. - PostgreSQL:
now()
gibt den aktuellen Zeitstempel zurück
Lösungen:
Wenn du nun den Eintrag von Lexy mit auswählst:
Du solltest einen Zeitstempel mit der aktuellen Uhrzeit in der Spalte last_online
erhalten.
Mit aktuellem Wert aktualisieren
Natürlich können wir auch den aktuellen Wert der Spalte verwenden, die wir aktualisieren wollen.
Erinnerst du dich an unsere money
Tabelle, die wir im insert chapter erstellt haben?
Die brauchen wir jetzt wieder.
Nehmen wir an, wir wollen 600
unserer Währung von Lexy nehmen, aber nur, wenn sie mindestens 600
hat.
Die Syntax dafür ist dieselbe wie die von vorhin.
Wir verweisen einfach auf den Spaltenwert selbst.
Versuche, das den betrag von der Spalte money
zu entfernen und passe die Bedingung mit der Prüfung für den Betrag von money
an.
Lass uns überprüfen, was sich geändert hat:
id | money |
---|---|
10 | 400 |
Wir können jetzt sehen, dass Lexy nur 400
unserer Währung hat.
Also 600
weniger als ursprünglich.
Wenn wir unser Update erneut ausführen, wird dieser Wert immer noch derselbe sein.
Dieser Mechanismus kann sehr nützlich sein, wenn du sicher sein willst, dass der Spieler wirklich über Geld hat und das Geld direkt abheben kann.