SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Adicionar uma coluna gerada a uma tabela no SQLite


Você pode adicionar uma coluna gerada a uma tabela existente no SQLite usando o ALTER TABLE demonstração.

Implementação do SQLite do ALTER TABLE A instrução é muito limitada, mas permite adicionar uma coluna – incluindo colunas geradas.

Colunas geradas (também conhecidas como “colunas computadas”) são colunas que obtêm seu valor de uma expressão que calcula valores de outras colunas.

Exemplo


Aqui está um exemplo simples para demonstrar.

Tabela Original


Vamos primeiro criar uma tabela sem uma coluna gerada e inserir alguns dados:
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   

Adicione a coluna gerada


Agora vamos adicionar uma coluna gerada nessa tabela.
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

Uma coluna gerada chamada FullName foi adicionado. Esta coluna concatena o FirstName coluna com o Sobrenome coluna e, portanto, qualquer pessoa que consultar essa tabela não precisará mais realizar essa concatenação em sua consulta.

Atualizando dados


Você não pode atualizar os dados na coluna gerada diretamente. Você precisa atualizar os dados nas colunas subjacentes que contribuem para seu valor.

Então, se quisermos atualizar Barney Rubble para Betty Rubble , precisaríamos atualizar o FirstName coluna.
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