66

以前に SQL で使用されている構文を見たことがなく、INSERT OR REPLACE INTO names (id, name) VALUES (1, "John")なぜ SQL よりも優れているのか疑問に思っていましUPDATE names SET name = "John" WHERE id = 1た。どちらか一方を使用する正当な理由はありますか。この構文は SQLite に固有のものですか?

4

4 に答える 4

98

行が存在しない場合、UPDATE は何もしません。

INSERT OR REPLACE は、行が存在しない場合は挿入し、存在する場合は値を置き換えます。

于 2010-02-12T12:19:53.427 に答える
35

私は現在、そのようなステートメントに取り組んでおり、注意すべき別の事実を見つけました。INSERT OR REPLACE は、ステートメントで指定されていない値を置き換えます。たとえば、テーブルに値を指定しなかった列「lastname」が含まれている場合、INSERT OR REPLACE は可能であれば「lastname」を無効にするか (制約により許可されます)、失敗します。

于 2012-09-26T14:58:47.643 に答える
5

id=1 がまだ存在しない場合、insert または replace クエリは新しいレコードを挿入します。

更新クエリは、存在する場合は id=1 のみを更新し、存在しない場合は新しいレコードを作成しません。

于 2010-02-12T12:21:28.713 に答える