Przepraszam, źle zrozumiałem wczoraj. Bez wyzwalaczy raczej tego nie zrobisz w samej bazie danych. Pokażę na przykładzie jak można to zrobić
Załóżmy, że masz tabelę:
CREATE TABLE `tabela` (
`a` int(10) UNSIGNED NOT NULL DEFAULT '0',
`b` int(10) UNSIGNED NOT NULL DEFAULT '0'
);
Dodajemy kolejną kolumnę z ustawionym indeksem UNIQUE:
ALTER TABLE `tabela` ADD `indeks` VARCHAR(21) NOT NULL DEFAULT '',
ADD UNIQUE (`indeks`)
będzie ona przechowywać najpierw jako pierwszą większą z liczb a i b, później jakiś znak, później mniejszą z liczb a i b, dlatego typ VARCHAR(21)
Następnie dodajesz wyzwalacz przynajmniej przed dodawaniem nowych rekordów, jako znaku rozdzielającego użyłem przecinka:
DELIMITER //
CREATE TRIGGER `tabela_trigger1` BEFORE INSERT ON `tabela`
FOR EACH ROW
BEGIN
IF new.a>=new.b THEN
SET new.indeks=CONCAT(new.a, ',' ,new.b);
ELSE
SET new.indeks=CONCAT(new.b, ',' ,new.a);
END IF;
END;
//
DELIMITER ;
Jeżeli te liczby a i b będziesz zmieniać za pomocą zapytań UPDATE, to należy jeszcze napisać kolejny wyzwalacz przy zmianie danych, analogicznie jak ten wyżej ale ze zdarzeniem BEFORE UPDATE
Ewentualnie nie cudować z wyzwalaczami w bazie danych i w PHP wcześniej wykonać zapytania, które sprawdzą czy dana operacja jest dozwolona, ja raczej bym tak zrobił