ALTER TABLE
を使用して、生成された列をSQLiteの既存のテーブルに追加できます。 ステートメント。
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
フルネームと呼ばれる生成された列 追加されました。この列は、 FirstNameを連結します 姓の列 列であるため、このテーブルをクエリする人は、クエリでその連結を自分で実行する必要がなくなります。
データの更新
生成された列のデータを直接更新することはできません。その値に寄与する基になる列のデータを更新する必要があります。
したがって、 Barney Rubbleを更新したい場合 ベティ瓦礫 、 FirstNameを更新する必要があります 列。
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