Sie können eine generierte Spalte zu einer vorhandenen Tabelle in SQLite hinzufügen, indem Sie ALTER TABLE
verwenden Aussage.
SQLites Implementierung von ALTER TABLE
-Anweisung ist sehr begrenzt, aber Sie können eine Spalte hinzufügen – einschließlich generierter Spalten.
Generierte Spalten (auch als „berechnete Spalten“ bezeichnet) sind Spalten, die ihren Wert aus einem Ausdruck beziehen, der Werte aus anderen Spalten berechnet.
Beispiel
Hier ist ein einfaches Beispiel zur Veranschaulichung.
Originaltabelle
Lassen Sie uns zuerst eine Tabelle ohne eine generierte Spalte erstellen und einige Daten einfügen:
CREATE TABLE Person(
Id INTEGER PRIMARY KEY,
FirstName,
LastName
);
INSERT INTO Person VALUES
( 1, 'Barney', 'Rubble' ),
( 2, 'Peter', 'Griffin' ),
( 3, 'Fritz', 'The Cat' );
SELECT * FROM Person;
Ergebnis:
Id FirstName LastName ---------- ---------- ---------- 1 Barney Rubble 2 Peter Griffin 3 Fritz The Cat
Fügen Sie die generierte Spalte hinzu
Jetzt fügen wir dieser Tabelle eine generierte Spalte hinzu.
ALTER TABLE Person ADD COLUMN
FullName GENERATED ALWAYS AS (FirstName || ' ' || LastName);
SELECT * FROM Person;
Ergebnis:
Id FirstName LastName FullName ---------- ---------- ---------- ------------- 1 Barney Rubble Barney Rubble 2 Peter Griffin Peter Griffin 3 Fritz The Cat Fritz The Cat
Eine generierte Spalte namens FullName wurde hinzugefügt. Diese Spalte verkettet den FirstName Spalte mit dem Nachnamen Spalte, und daher muss jeder, der diese Tabelle abfragt, diese Verkettung nicht mehr selbst in seiner Abfrage durchführen.
Aktualisieren von Daten
Sie können Daten in der generierten Spalte nicht direkt aktualisieren. Sie müssen die Daten in den zugrunde liegenden Spalten aktualisieren, die zu seinem Wert beitragen.
Wenn wir also Barney Rubble aktualisieren wollten an Betty Rubble , müssten wir FirstName aktualisieren Spalte.
UPDATE Person
SET FirstName = 'Betty'
WHERE Id = 1;
SELECT * FROM Person;
Ergebnis:
Id FirstName LastName FullName ---------- ---------- ---------- --------------- 1 Betty Rubble Betty Rubble 2 Peter Griffin Peter Griffin 3 Fritz The Cat Fritz The Cat