![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 14.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Czy jest możliwość nałożenia na tabelę unikalnego klucza na dwóch kolumnach, który działa w standardowej i odwróconej kolejności?
Przykładowo tabela zawiera kolumny A i B, wpisując wartości (1,3) chcę, aby klucz unikalny był zarówno 1-3, jak i 3-1 i zapobiegał jednocześnie wpisaniu drugi raz pary (1,3) oraz pary (3,1). Ten post edytował pracus 24.10.2010, 07:13:25 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 43 Dołączył: 9.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 14.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Mimo to pozwala na dodanie odwróconych wartości.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 43 Dołączył: 9.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
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ę:
Dodajemy kolejną kolumnę z ustawionym indeksem UNIQUE:
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:
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ł |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 30.07.2025 - 23:33 |