2016-05-26 4 views
0

私はユニークでないキーに基づくUPDATE/INSERT?

idがプライマリ一意のキーである
id | user | date | data1 | data2 ...... 

を含むテーブルを持っています。

私はそれらのいずれかが

存在しない場合、INSERTは私がDUPLICATE KEY ON ... INSERT INTOについて考えながらuserdateの両方が存在する場合は、アップデートすることができますクエリを記述しようとしています。.. .UPDATEメソッドを使用する必要がありますが、ユニークキーを使用する必要があります。

この問題を解決するにはどうすればよいでしょうか?

+2

'(user、date)'をユニークなキーにしようとしましたか?これは、 'INSERT INTO ... ON DUPLICATE KEY UPDATE'メソッドを正しく起動させるかもしれません。 – cyberbit

+0

@cyberbitこれは実際に素晴らしいアイデアです!私はこのように実装しようと思う。 – JChao

+0

うまくいけばうまくいきます。我々に教えてください。 ;) – cyberbit

答えて

2

コメントの中で、(user, date)にする必要があります。予想通り

これはuserdateフィールドを照合し、一致するものが見つからなかった新しいものを挿入して行を更新し、INSERT INTO ... ON DUPLICATE KEY UPDATEクエリがトリガされます。

0

有効なオプションは、INSERT ... INTOREPLACEの両方に一意のキーが必要なので、UPSERTをmysqlで使用するプログラミング言語で実装することだけです。

または、userdate列には、いずれにしてもビジネスロジックと一致するように見えるユニークなインデックスを追加してください。