に応じて、SQLiteのテーブルを挿入または更新する私はこのようなSQLiteのテーブルを持っている:は、ID
CREATE TABLE test (id int PRIMARY KEY, Name text, Country text, ..., ...)
私は列の値がid
を除き、変更することができ、このテーブルのデータを取得しています。だから、特定のid
がない場合は挿入したいが、新しい値でそのid
のレコードを更新したい。
私はこれを試してみました: - 罰金である -
INSERT OR IGNORE INTO test (id, Name, ..., ...) VALUES (?,?, ....)"
これは、重複id's
を作成しませんが、それは、レコードの残りの部分を更新しないのいずれかid
はすでにテーブルに存在する場合。
id
にはSELECT
を使用しないようにして、それが存在するかどうかを確認してから、それに応じて更新または挿入してください。
を'SELECT'の結果です。 @CLは、私が他のところで見た解決策を示唆しています。その特定の 'id'で行を更新します。これは' id'があれば動作し、更新がない場合は 'INSERT' 。しかし、それは依然として2つのクエリソリューションです。私はどちらが速いのかわからない – chiapa
私は 'INSERT OR REPLACE'が唯一のワンステップ解決策だと思います。なぜあなたは2つの操作を行うような嫌悪を持っているのですか? sqliteでは、包括的なソリューションであるため、従来のクライアント/サーバーRDBMSで支払うコストを支払う必要はありません。ネットワークスタックを介する往復やコンテキストスイッチなどがないためです。 – redneb
嫌悪感ではなく、不必要な操作やオーバーヘッドを避けたいだけでした。 T-SQLでは、パフォーマンスを損なう可能性があるため、1つを使用できる場合は2つの操作を避けます – chiapa