Я настраиваю программу голосования, в которой я хочу ограничить пользователей одним голосованием.У меня есть две таблицы: (а) предметная таблица и (б) таблица голосования.
**Subject_Table**
SID Subject Total_Votes
1 Cows 5
2 Chickens 3
**Vote_Table**
VID Subject User Voteup
1 Cows John 1
Всего голосов равных голосов всех пользователей.Голосование может равняться 1, если за предмет проголосовали.Я создал уникальную пару значений с субъектом и пользователем со следующим утверждением без каких-либо проблем:
ALTER TABLE Vote_Table ADD UNIQUE limitvote(Subject,User);
При первом голосовании по теме выполняются следующие запросы:
$sql="INSERT INTO Vote_Table (Subject, User,Voteup) VALUES ('$Subject', '$User', '$Voteup') ON DUPLICATE KEY UPDATE up=1";
$q = "UPDATE Subject_Table SET Total_Votes = $votes_up= //current votes plus 1;
Даже если Джон проголосует дважды, голос всегда будет равен 1 в элементе Vote_Table, поскольку ON DUPLICATE KEY UPDATE up = 1.Но это не так в Subject_Table.Без ограничений Джон мог голосовать бесконечно.Ограничение должно быть парой субъект-пользователь.Ограничения не могут быть только субъектом или пользователем, так как Джон может голосовать за других субъектов, а другие пользователи могут голосовать за коров.
Как я могу проверить Vote_Table, чтобы увидеть, существует ли уникальная пара субъект-пользователь (Коровы и Джон)) до того, как я обновлю Subject_Table?