sql >> Base de Datos >  >> RDS >> SQLite

Agregar una columna generada a una tabla en SQLite

Puede agregar una columna generada a una tabla existente en SQLite usando ALTER TABLE declaración.

Implementación de SQLite de ALTER TABLE La declaración es muy limitada, pero le permite agregar una columna, incluidas las columnas generadas.

Las columnas generadas (también conocidas como "columnas calculadas") son columnas que obtienen su valor de una expresión que calcula valores de otras columnas.

Ejemplo

Aquí hay un ejemplo simple para demostrarlo.

Mesa original

Primero creemos una tabla sin una columna generada e insertemos algunos datos:

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;

Resultado:

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

Agregar la columna generada

Ahora agreguemos una columna generada a esa tabla.

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

SELECT * FROM Person;

Resultado:

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

Una columna generada llamada FullName fue añadido. Esta columna concatena el FirstName columna con el Apellido columna y, por lo tanto, cualquiera que consulte esta tabla ya no necesita realizar esa concatenación en su consulta.

Actualización de datos

No puede actualizar los datos en la columna generada directamente. Debe actualizar los datos en las columnas subyacentes que contribuyen a su valor.

Entonces, si quisiéramos actualizar Barney Rubble a Betty Escombros , tendríamos que actualizar el FirstName columna.

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

SELECT * FROM Person;

Resultado:

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