Standardwerte
Standardwerte sind eine ziemlich nette Sache.
Sie werden immer verwendet, wenn du etwas einfügst und die Spalte leer lässt.
Der Wert kann ein statischer Typ wie eine Zahl oder etwas Dynamisches wie das aktuelle Datum oder die Uhrzeit sein.
Das ist eine sehr nützliche Sache.
Es gibt auch einen speziellen Standardwert, nämlich das Auto Increment
, welches wir uns später ansehen werden.
Aber zuerst schauen wir uns an, wie Standardwerte funktionieren.
Erinnerst du dich noch an unsere alte player
Tabelle, die wir hatten?
Wir speichern die Online-Zeit manuell bei der Erstellung des Spielers.
Aber wir können eigentlich davon ausgehen, dass der Spieler auch online sein sollte, wenn wir ihn das erste Mal einfügen.
Wir können also die last_online
Spalte auf die aktuelle Zeit setzen, wenn wir unser INSERT
ausführen.
Vergiss nicht, deine Tabelle zuerst zu löschen.
CREATE TABLE player (
id INTEGER,
player_name TEXT NOT NULL,
-- Dies funktioniert auch in Postgres. Es wird jedoch empfohlen, stattdessen now() zu verwenden
last_online TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Der current_timestamp
gibt immer den aktuellen Zeitstempel zurück, wenn wir die Daten einfügen.
In Postgres würdest du stattdessen now()
verwenden.
Prüfen wir, ob es tatsächlich funktioniert!
INSERT INTO player(id, player_name)
VALUES (1, 'Mike'),
(2, 'Sarah'),
(3, 'John'),
(4, 'Lilly'),
(5, 'Matthias'),
(6, 'Lenny'),
(7, 'Summer'),
(8, 'Marry'),
(9, 'Milana'),
(10, 'Lexi')
Beachte, dass wir dieses Mal nur id
und player_name
angeben und die Spalte last_online
nicht setzen.
Und nun ist es an der Zeit, einen Blick auf unsere Daten zu werfen!
Und wir erhalten:
id | player_name | last_online |
---|---|---|
1 | Mike | 2022-11-25 23:52:26.081797 |
2 | Sarah | 2022-11-25 23:52:26.081797 |
3 | John | 2022-11-25 23:52:26.081797 |
4 | Lilly | 2022-11-25 23:52:26.081797 |
5 | Matthias | 2022-11-25 23:52:26.081797 |
6 | Lenny | 2022-11-25 23:52:26.081797 |
7 | Summer | 2022-11-25 23:52:26.081797 |
8 | Marry | 2022-11-25 23:52:26.081797 |
9 | Milana | 2022-11-25 23:52:26.081797 |
10 | Lexi | 2022-11-25 23:52:26.081797 |
Es hat geklappt! Natürlich werden deine Zeiten deine aktuelle Zeit sein. Natürlich kannst du dort, wie bereits erwähnt, alles einfügen. Es ist eine gute Methode, um sicherzustellen, dass die Werte jedes Mal vorhanden sind, wenn du aus deiner Zeile liest.
Allerdings gibt es noch einen kleinen Fehler in unserer Tabelle.
Führe dies aus.
Werfen wir einen Blick auf unseren neu eingefügten Spieler.
id | player_name | last_online |
---|---|---|
11 | Jonathan | null |
Wie wir sehen können, ist last_online
NULL
.
Wir wollen aber, dass es immer ein Wert ist.
Deshalb fügen wir auch hier ein NOT NULL
ein.
Unsere Tabelle wird am Ende so aussehen.
Vergiss nicht, deine Tabelle zuerst zu löschen
CREATE TABLE player (
id INTEGER,
player_name TEXT NOT NULL,
-- Dies funktioniert auch in Postgres. Es wird jedoch empfohlen, stattdessen now() zu verwenden
last_online TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
Fassen wir zusammen, was wir bis jetzt haben:
Wir können eine ID in unsere Tabelle einfügen, die auch NULL
sein kann, dazu kommen wir später.
Wir haben auch einen Spielernamen, der nicht NULL
sein darf.
Wenn wir einen Spieler einfügen, wird die Spalte last_online
von der Datenbank gesetzt.