SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Hinzufügen einer generierten Spalte zu einer Tabelle in SQLite

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