制約違反を処理するために ON CONFLICT REPLACE を使用する (Use ON CONFLICT REPLACE to Handle Constraint Violations)
このステップでは、ON CONFLICT REPLACE
句を使用して制約違反を処理する方法を学びます。この句は、制約に違反する場合、SQLite に既存のレコードを新しいレコードで置き換えるように指示します。
sqlite>
プロンプトで次のコマンドを実行します。
INSERT OR REPLACE INTO users (id, username, email) VALUES (1, 'Alice', '[email protected]');
このコマンドは、ユーザー名 'Alice' を持つ新しいレコードを挿入しようとします。ON CONFLICT REPLACE
句が使用されているため、SQLite は既存のレコードを新しいレコードで置き換えます。REPLACE
は古い行を削除して新しい行を挿入するため、この場合は id
を指定する必要があることに注意してください。
レコードが置き換えられたことを確認するには、次のコマンドを実行します。
SELECT * FROM users;
期待される出力 (Expected Output):
1|Alice|[email protected]
出力は、ユーザー名 'Alice' を持つレコードのメールアドレスが [email protected]
に更新されたことを示しています。
INSERT OR REPLACE
ステートメントは、データの整合性を維持しながら既存のレコードを更新する方法を提供します。
最後に、SQLite シェルを終了します。
.exit
これにより、データベース接続が閉じられ、ターミナルに戻ります。