SQLite
 sql >> Database >  >> RDS >> SQLite

Aggiungi una colonna generata a una tabella in SQLite

Puoi aggiungere una colonna generata a una tabella esistente in SQLite utilizzando ALTER TABLE dichiarazione.

L'implementazione di SQLite di ALTER TABLE istruzione è molto limitata, ma ti consente di aggiungere una colonna, comprese le colonne generate.

Le colonne generate (note anche come "colonne calcolate") sono colonne che ottengono il loro valore da un'espressione che calcola i valori da altre colonne.

Esempio

Ecco un semplice esempio da dimostrare.

Tabella Originale

Per prima cosa creiamo una tabella senza una colonna generata e inseriamo alcuni dati:

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;

Risultato:

Id          FirstName   LastName  
----------  ----------  ----------
1           Barney      Rubble    
2           Peter       Griffin   
3           Fritz       The Cat   

Aggiungi la colonna generata

Ora aggiungiamo una colonna generata a quella tabella.

ALTER TABLE Person ADD COLUMN 
  FullName GENERATED ALWAYS AS (FirstName || ' ' || LastName);

SELECT * FROM Person;

Risultato:

Id          FirstName   LastName    FullName     
----------  ----------  ----------  -------------
1           Barney      Rubble      Barney Rubble
2           Peter       Griffin     Peter Griffin
3           Fritz       The Cat     Fritz The Cat

Una colonna generata denominata FullName è stato aggiunto. Questa colonna concatena il Nome colonna con il Cognome colonna, e quindi chiunque interroghi questa tabella non ha più bisogno di eseguire quella concatenazione nella propria query.

Aggiornamento dei dati

Non puoi aggiornare direttamente i dati nella colonna generata. Devi aggiornare i dati nelle colonne sottostanti che contribuiscono al suo valore.

Quindi, se volessimo aggiornare Barney Rubble a Betty Rubble , dovremmo aggiornare il Nome colonna.

UPDATE Person 
SET FirstName = 'Betty'
WHERE Id = 1;

SELECT * FROM Person;

Risultato:

Id          FirstName   LastName    FullName       
----------  ----------  ----------  ---------------
1           Betty       Rubble      Betty Rubble   
2           Peter       Griffin     Peter Griffin  
3           Fritz       The Cat     Fritz The Cat