SQLite
 sql >> Base de données >  >> RDS >> SQLite

Ajouter une colonne générée à une table dans SQLite

Vous pouvez ajouter une colonne générée à une table existante dans SQLite en utilisant ALTER TABLE déclaration.

Implémentation de SQLite de ALTER TABLE est très limitée, mais elle vous permet d'ajouter une colonne, y compris les colonnes générées.

Les colonnes générées (également appelées "colonnes calculées") sont des colonnes qui tirent leur valeur d'une expression qui calcule les valeurs d'autres colonnes.

Exemple

Voici un exemple simple pour illustrer.

Tableau d'origine

Commençons par créer un tableau sans colonne générée et insérons quelques données :

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;

Résultat :

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

Ajouter la colonne générée

Ajoutons maintenant une colonne générée à ce tableau.

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

SELECT * FROM Person;

Résultat :

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

Une colonne générée appelée FullName était ajouté. Cette colonne concatène le FirstName colonne avec le LastName colonne, et donc toute personne qui interroge cette table n'a plus besoin d'effectuer elle-même cette concaténation dans sa requête.

Mise à jour des données

Vous ne pouvez pas mettre à jour directement les données dans la colonne générée. Vous devez mettre à jour les données dans les colonnes sous-jacentes qui contribuent à sa valeur.

Donc, si nous voulions mettre à jour Barney Rubble à Betty Rubble , nous aurions besoin de mettre à jour le FirstName colonne.

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

SELECT * FROM Person;

Résultat :

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