3

C#で次のSQLクエリがあります

REPLACE INTO users(uid, username, firstseen, ...)
VALUES(@uid, @username, @firstseen, ...)

ユーザー レコードを更新しようとしていますが、このユーザーを初めて見たとき以外は firstseen を変更したくありません。データベースにクエリを実行できますが、それにより多くのオーバーヘッドが追加されますが、それを行うためのより良い方法はありますか?

4

1 に答える 1

3

REPLACE INTOは、すでに存在するすべてのデータを踏みにじり、ステートメントDELETEが続くのと同じです。INSERT

あなたが望むかもしれないものは次のとおりです:

INSERT IGNORE INTO users (uid, username, screenname, ...)
  VALUES (@...)
  ON DUPLICATE KEY UPDATE uid=VALUES(uid), username=VALUES(username), ...

ON DUPLICATE KEY明らかに同じものを省略して、必要に応じてセクション内の特定のフィールドを割り当てることができます。

于 2013-03-19T21:11:01.057 に答える