例: GENERATED ALWAYSとして定義されたIDENTITYの更新
GENERATED ALWAYS AS IDENTITYとして定義されているIDENTITY列である主キーを含めて表を作成し、その表にデータを挿入します。
CREATE TABLE Test_sqlUpdateAlways (
idValue INTEGER GENERATED ALWAYS AS IDENTITY,
name STRING,
PRIMARY KEY(idValue))
INSERT INTO Test_sqlUpdateAlways VALUES (DEFAULT, 'joe')
INSERT INTO Test_sqlUpdateAlways VALUES (DEFAULT, 'jasmine')
Test-sqlUpdateAlways
表には次の行が含まれます:
1, 'joe'
2, 'jasmine'
例7-36 エラー・シナリオ - GENERATED ALWAYSとして定義されているIDENTITY列を更新する
次のようにidValue
列を更新できます:UPDATE Test_sqlUpdateAlways SET idValue = 10 WHERE name=joe
前述のUPDATE文では、GENERATED ALWAYSとして定義されているIDENTITY列に値を設定できないという例外が発生します。GENERATED ALWAYSとして定義されているIDENTITY列は更新できません。GENERATED BY DEFAULTとして定義されているIDENTITY列のみを更新できます。
この例外を解決し、IDENTITY列値を更新できるようにするには、IDENTITY列を変更し、IDENTITY列のプロパティをGENERATED BY DEFAULTに変更する必要があります。ただし、既存のデータに影響がある可能性があります。IDENTITY列の変更方法の詳細は、IDENTITY列の変更を参照してください。