sql >> データベース >  >> RDS >> Mysql

INSERT INTO ... ONDUPLICATEUPDATEすべての値

    INSERT INTO … ON DUPLICATE KEY UPDATE このように機能します:

    • 通常どおり行を挿入しようとします
    • いずれかの列で制約違反が発生すると、UPDATEが実行されます。 代わりに、INSERTが使用する既存の行のステートメント ステートメントが衝突しました

    これは単に、UPDATE ステートメントだけで成功し、そのON DUPLICATE KEY UPDATE 同等のものも動作します。つまり、明らかにUPDATEの制約に違反することはできません。 ステートメントのいずれか、またはすべてが失敗します(たとえば、UNIQUEに値を設定しようとしています 別の行にすでに存在する列)。

    同じ列に同じ値を再度設定した場合、それは基本的に何もしません。列の値は変更されないため、エラーが発生することもありません(本当にファンキーなBEFORE UPDATEがないと仮定します。 誤動作する可能性のあるトリガー)。ここでは列の数は関係ありません。1つのステートメントで必要な数だけ変更できます。




    1. Robolectricアクセスデータベースはエラーをスローします

    2. PostgreSQLは標準のSQL構文を強制します

    3. SQLINクエリは奇妙な結果を生成します

    4. dockerでpgadminをpostgresに接続する