Можете да добавите генерирана колона към съществуваща таблица в SQLite, като използвате ALTER TABLE
изявление.
Реализацията на SQLite на ALTER TABLE
изразът е много ограничен, но ви позволява да добавите колона – включително генерирани колони.
Генерираните колони (известни също като „изчислени колони“) са колони, които получават стойността си от израз, който изчислява стойности от други колони.
Пример
Ето един прост пример за демонстрация.
Оригинална таблица
Нека първо създадем таблица без генерирана колона и да вмъкнем някои данни:
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;
Резултат:
Id FirstName LastName ---------- ---------- ---------- 1 Barney Rubble 2 Peter Griffin 3 Fritz The Cat
Добавете генерираната колона
Сега нека добавим генерирана колона към тази таблица.
ALTER TABLE Person ADD COLUMN
FullName GENERATED ALWAYS AS (FirstName || ' ' || LastName);
SELECT * FROM Person;
Резултат:
Id FirstName LastName FullName ---------- ---------- ---------- ------------- 1 Barney Rubble Barney Rubble 2 Peter Griffin Peter Griffin 3 Fritz The Cat Fritz The Cat
Генерирана колона, наречена FullName беше добавен. Тази колона обединява First Name колона с Фамилия колона и следователно всеки, който прави заявки към тази таблица, вече не трябва да извършва това обединяване в заявката си.
Актуализиране на данните
Не можете директно да актуализирате данните в генерираната колона. Трябва да актуализирате данните в основните колони, които допринасят за стойността им.
Така че, ако искаме да актуализираме Barney Rubble до Бети Ръбъл , ще трябва да актуализираме First Name колона.
UPDATE Person
SET FirstName = 'Betty'
WHERE Id = 1;
SELECT * FROM Person;
Резултат:
Id FirstName LastName FullName ---------- ---------- ---------- --------------- 1 Betty Rubble Betty Rubble 2 Peter Griffin Peter Griffin 3 Fritz The Cat Fritz The Cat