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