10
テーブルの行を更新したり、存在しない場合は挿入したりするにはどうすればよいですか?
私は次のカウンターの表を持っています: CREATE TABLE cache ( key text PRIMARY KEY, generation int ); カウンターの1つをインクリメントするか、対応する行がまだ存在しない場合はゼロに設定したいと思います。標準SQLで並行性の問題なしにこれを行う方法はありますか?操作はトランザクションの一部である場合もあれば、別個の場合もあります。 可能であれば、SQLはSQLite、PostgreSQL、MySQLで変更せずに実行する必要があります。 検索により、並行性の問題に悩まされているか、データベースに固有のアイデアがいくつか見つかりました。 INSERT新しい行を試してUPDATE、エラーが発生した場合。残念ながら、のエラーINSERTは現在のトランザクションを中止します。 UPDATEINSERT行。行が変更されていない場合は、新しい行。 MySQLにはON DUPLICATE KEY UPDATE句があります。 編集:すべての素晴らしい返信をありがとう。ポールは正しいように見えますが、これを行うための単一のポータブルな方法はありません。それは非常に基本的な操作のように聞こえるので、それは私にとって非常に驚くべきことです。