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