Combinationally benzersiz MySQL tablo

0 Cevap php

Yani, burada bir sorun (muhtemelen kolay bir tane: P) bulunuyor

Bu benim tablo yapısı:

CREATE TABLE `users_awards` (
  `user_id` int(11) NOT NULL,
  `award_id` int(11) NOT NULL,
  `duplicate` int(11) NOT NULL DEFAULT '0',
  UNIQUE KEY `award_id` (`award_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

Yani bir kullanıcı ödül sistemi bulunuyor. Ben 'yinelenen' alanını neden olan, benim kullanıcıların aynı ödülü birden çok kez verilmesi istemiyorum.

Ben çalışıyorum sorgu (3 ve 2 örnek veri ile) şudur:

INSERT INTO  users_awards (user_id, award_id)
VALUES ('3','2') ON DUPLICATE KEY UPDATE duplicate=duplicate+1

Yani benim MySQL biraz paslı, ama user_id birincil anahtar olarak ayarlanır, ve award_id Bir UNIQUE anahtar gibi. Bu (tür) istenen etkiyi yarattı.

Kullanıcı 1 ödülü 2 verildiğinde, o girdi. O / o iki kez bu var ise, yalnızca bir satır tabloda olması, ve 1 set olacağını yinelenen. Ve yine, 2, vb olurdu

Kullanıcı 2 ödül 1 verildiğinde, o girdi. O / o iki kez bu var, vs, vs güncellenen yinelenen

Ancak kullanıcı 1 ödül 1 (kullanıcı 2 sonra zaten layık görülmüştür) verildiğinde, (ödülü 1) kullanıcı 2 'nin yinelenen alan artar ve hiçbir şey kullanıcıya 1 eklenir.

Maalesef bu biraz n00bish eğer. Gerçekten yardım takdir!

Kriko

0 Cevap