ホームページ >データベース >mysql チュートリアル >競合する一意のキーを使用して挿入するときに既存のレコードを簡潔に更新するにはどうすればよいですか?

競合する一意のキーを使用して挿入するときに既存のレコードを簡潔に更新するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-18 09:43:09303ブラウズ

How Can I Concisely Update Existing Records When Inserting with Conflicting Unique Keys?

重複キー更新時に挿入: 簡潔なアプローチ

データベースを操作する場合、競合する一意のキーを持つ新しいレコードを挿入しようとするときに、既存のレコードを更新することが望ましいことがよくあります。 。ここで、「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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。