sql >> Databasteknik >  >> RDS >> SQLite

Lägg till en genererad kolumn till en tabell i SQLite

Du kan lägga till en genererad kolumn till en befintlig tabell i SQLite genom att använda ALTER TABLE uttalande.

SQLites implementering av ALTER TABLE uttalandet är mycket begränsat, men det tillåter dig att lägga till en kolumn – inklusive genererade kolumner.

Genererade kolumner (även kända som "beräknade kolumner") är kolumner som får sitt värde från ett uttryck som beräknar värden från andra kolumner.

Exempel

Här är ett enkelt exempel att visa.

Original tabell

Låt oss först skapa en tabell utan en genererad kolumn och infoga några data:

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;

Resultat:

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

Lägg till den genererade kolumnen

Låt oss nu lägga till en genererad kolumn i den tabellen.

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

SELECT * FROM Person;

Resultat:

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

En genererad kolumn som heter Fullnamn lades till. Den här kolumnen sammanfogar FirstName kolumnen med Efternamn kolumnen, och därför behöver alla som frågar den här tabellen inte längre utföra den sammanlänkningen själva i sin fråga.

Uppdatera data

Du kan inte uppdatera data i den genererade kolumnen direkt. Du måste uppdatera data i de underliggande kolumnerna som bidrar till dess värde.

Så om vi ville uppdatera Barney Rubble till Betty Rubble , skulle vi behöva uppdatera Förnamn kolumn.

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

SELECT * FROM Person;

Resultat:

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

  1. 3 sätt att returnera tidszonen från ett Datetime-värde i Oracle

  2. Konvertera från DateTime till INT

  3. Hur lagrar man filnamnet i databasen, med annan information när man laddar upp bilden till servern med PHP?

  4. Fixa "Applikationen "SQLDeveloper.app" kan inte öppnas.