sql >> Database >  >> RDS >> SQLite

Voeg een gegenereerde kolom toe aan een tabel in SQLite

U kunt een gegenereerde kolom toevoegen aan een bestaande tabel in SQLite met behulp van de ALTER TABLE verklaring.

SQLite's implementatie van de ALTER TABLE statement is zeer beperkt, maar u kunt er wel een kolom aan toevoegen – inclusief gegenereerde kolommen.

Gegenereerde kolommen (ook wel 'berekende kolommen' genoemd) zijn kolommen die hun waarde halen uit een expressie die waarden uit andere kolommen berekent.

Voorbeeld

Hier is een eenvoudig voorbeeld om te demonstreren.

Originele tabel

Laten we eerst een tabel maken zonder een gegenereerde kolom en wat gegevens invoegen:

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;

Resultaat:

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

Voeg de gegenereerde kolom toe

Laten we nu een gegenereerde kolom aan die tabel toevoegen.

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

SELECT * FROM Person;

Resultaat:

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

Een gegenereerde kolom met de naam FullName was toegevoegd. Deze kolom voegt de FirstName . samen kolom met de Achternaam kolom, en daarom hoeft iedereen die deze tabel doorzoekt die aaneenschakeling niet meer zelf uit te voeren in zijn zoekopdracht.

Gegevens bijwerken

U kunt gegevens in de gegenereerde kolom niet rechtstreeks bijwerken. U moet de gegevens bijwerken in de onderliggende kolommen die bijdragen aan de waarde ervan.

Dus als we Barney Rubble willen updaten naar Betty Rubble , moeten we de FirstName . bijwerken kolom.

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

SELECT * FROM Person;

Resultaat:

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

  1. SentryOne-gegevens verzenden naar de Azure SQL Database DTU-calculator

  2. Adaptieve dynamische statistieken verslechteren de prestaties in 12.1.0.2 RAC

  3. Hoe specificeer je de IN-component in een dynamische query met behulp van een variabele?

  4. Substring ophalen in SQL Server