Да, MySQL предоставя възможност за това.
ALTER TABLE MyTable
ADD UNIQUE KEY `my_unique_key` (`group_id`, `user_id`)
Не знам за какво използвате тази таблица, но изглежда, че този уникален ключ може да е силен кандидат за първичен ключ на таблицата. Първичният ключ също автоматично е уникален ключ. Ако решите да го направите първичен ключ, направете следното:
ALTER TABLE MyTable
ADD PRIMARY KEY (`group_id`, `user_id`)
(Ако получите съобщение за грешка, че вече има първичен ключ, издайте ALTER TABLE MyTable DROP PRIMARY KEY и след това повторете горната команда.)
Редактиране: В отговор на потребителски коментар
Не можете да имате няколко реда с идентични не-NULL стойности за колоните, обхванати от уникалния ключ. Така че не можете да имате два реда, където group_id = 0 AND user_id = 5 , например. 0 е стойност. Но ако направите една или и двете колони нулеви, можете можете имат множество реда, които са идентични до позиционирането на NULL с. Така че бихте могли да имате два (или повече) реда, където group_id IS NULL AND user_id = 1234 .
Условие:Горното е вярно и за двете често използвани MySQL машини за съхранение (MyISAM и InnoDB). MySQL има машини за съхранение, в които NULL се счита за уникална стойност, но вероятно не ги използвате.
Ако направите една или и двете колони нулеви, тогава вашият уникален ключ не може да бъде първичен ключ - първичният ключ трябва да е в колони, които NOT NULL .
Да предположим, че сте направили този ключ свой първичен ключ и сега искате да разрешите NULL в group_id колона. Не знам какъв тип данни group_id е в момента; Предполагам, че в момента е INT UNSIGNED NOT NULL , но ще трябва да промените по-долу, ако не е това. Вече няма да можете да използвате този ключ като основен ключ. Ето команда, която можете да изпълните, за да направите желаните промени:
ALTER TABLE MyTable
DROP PRIMARY KEY,
MODIFY group_id INT UNSIGNED,
ADD UNIQUE KEY `my_unique_key_with_nulls` (`group_id`, `user`)