データベースを操作する場合、競合する一意のキーを持つ新しいレコードを挿入しようとするときに、既存のレコードを更新することが望ましいことがよくあります。 。ここで、「ON DUPLICATE KEY UPDATE」句が役に立ちます。
状況
「id」フィールドに一意のインデックスを持つテーブルがあるとします。 ID がすでに存在する場合は、対応するレコードがupdated.
従来のアプローチ
従来のアプローチでは、以下に示すように UPDATE 句ですべてのフィールド値を指定する必要があります。
INSERT INTO table (id, a, b, c, d, e, f, g) VALUES (1, 2, 3, 4, 5, 6, 7, 8) ON DUPLICATE KEY UPDATE a=2, b=3, c=4, d=5, e=6, f=7, g=8;
Thisこのアプローチはうまく機能しますが、多数の場合は冗長になる可能性があります。 columns.
簡潔な代替
UPDATE 句を簡略化するために、「VALUES」キーワードを使用して、更新されたフィールドの新しい値を指定できます。これにより、列名を繰り返す必要がなくなります。
INSERT INTO table (id, a, b, c, d, e, f, g) VALUES (1, 2, 3, 4, 5, 6, 7, 8) ON DUPLICATE KEY UPDATE a=VALUES(a), b=VALUES(b), c=VALUES(c), d=VALUES(d), e=VALUES(e), f=VALUES(f), g=VALUES(g);
このアプローチはより簡潔であり、同じ結果が得られます。
最後に挿入された ID の取得
新しく挿入または更新されたレコードの ID を取得する必要がある場合は、データベースによって提供されるバックエンド固有のメソッドを使用するか、フレームワーク。たとえば、LuaSQL では、「conn:getlastautoid()」関数を使用して、最後に自動生成された ID を取得できます。
以上が競合する一意のキーを使用して挿入するときに既存のレコードを簡潔に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。