5

私のテーブル になるINSERT .. ON DUPLICATE KEY UPDATE(または) SQLクエリが必要になります。INSERT IGNORE INTO

更新が実際に行われたのか、それとも新しい行が挿入されたのかを知る必要があります。

良い参考文献はこのSO answerでしたが、残念ながら、実行されたアクションに対する答えはありません。

今のところ、私は INSERT .. ON DUPLICATE KEY UPDATE を使用しています:

INSERT INTO `tbl` (`CLIENT_ID`, `COMP_ID`, `DATETIME`) VALUES (12334,32,NOW())
                    ON DUPLICATE KEY UPDATE
                    `COMP_ID`=VALUES(`COMP_ID`), `DATETIME`=VALUES(`DATETIME`);";

影響を受けた_行の値を確認してください。
related_rows が 1 の場合 -> 新しい行が挿入される
ことを意味します。 impacted_rows が 2 の場合 -> 行が更新されることを意味します

重複の場合は変更を行わないようにしたいのですが、重複が存在することを知りたいです。

MYSQL の使用

4

1 に答える 1

4

影響を受ける行数を調べます。

  • の戻り値1は、INSERT発生したことを意味します
  • の戻り値2は、UPDATE発生したことを意味します

JDBC を使用している場合、これはor呼び出しのint戻り値です。update()execute()

すべてのフレームワークには、この値をユーザーに返す方法があります。たとえば、HibernateQuery.executeUpdate()はこのint値を返します。

于 2012-12-04T01:40:05.860 に答える