| Termin | Definicja |
|---|---|
| Błąd naruszenia unikalności | Błąd naruszenia unikalności sygnalizuje próbę wstawienia wartości powielającej istniejący, unikalny identyfikator. Na czym polega naruszenie unikalnościBłąd naruszenia unikalności pojawia się wtedy, gdy aplikacja próbuje zapisać w bazie danych wartość, która powinna występować tylko raz, lecz identyczna wartość znajduje się już w odpowiedniej kolumnie lub zestawie kolumn. Reguła ta jest zwykle wymuszana przez ograniczenie unikalności albo przez klucz główny. Klucz główny identyfikuje konkretny rekord i nie może powtarzać się w tabeli. Ograniczenie unikalności może natomiast pilnować innych danych, na przykład nazwy użytkownika, adresu poczty elektronicznej, numeru seryjnego urządzenia lub kodu towaru. Nie jest to zwykły błąd składni zapytania. Polecenie może być poprawnie zbudowane, a mimo to nie może zostać wykonane, ponieważ narusza zasadę spójności danych ustaloną dla tabeli. Silnik bazy danych odrzuca wtedy operację zapisu, aby nie dopuścić do powstania dwóch rekordów, których nie dałoby się jednoznacznie rozróżnić według wymaganego identyfikatora. Komunikat może zawierać nazwę tabeli, kolumny albo indeksu odpowiedzialnego za kontrolę unikalności. Klucz główny, indeks i zakres sprawdzaniaKontrola unikalności może dotyczyć jednej kolumny albo kilku kolumn traktowanych razem. W pierwszym przypadku powtórzenie pojedynczej wartości wystarcza do odrzucenia zapisu. W przypadku ograniczenia złożonego unikalność odnosi się do całej kombinacji wartości. Przykładowo, tabela może dopuszczać ten sam numer produktu dla różnych magazynów, jeśli unikalny jest dopiero zestaw pól „magazyn” i „numer produktu”. Dwie identyczne kombinacje tych wartości spowodują błąd, natomiast powtórzenie tylko jednego elementu kombinacji może być prawidłowe. W praktyce baza danych często realizuje taką kontrolę za pomocą indeksu unikalnego. Indeks przyspiesza wyszukiwanie i jednocześnie nie pozwala przechować dwóch takich samych kluczy indeksu. Z tego powodu komunikat nie zawsze wskazuje nazwę kolumny wprost; czasami podaje nazwę indeksu lub ograniczenia. Do poprawnej diagnozy potrzebne jest powiązanie tej nazwy ze schematem tabeli. Sam tekst błędu nie powinien być podstawą do przypadkowego usuwania rekordów ani wyłączania kontroli spójności. Typowe przyczyny powielonego zapisuJedną z częstych przyczyn jest ponowne wysłanie tego samego formularza lub żądania przez aplikację. Użytkownik może kliknąć przycisk więcej niż raz, odświeżyć stronę po zapisaniu danych albo ponowić operację po chwilowym opóźnieniu odpowiedzi. Jeżeli program za każdym razem wykonuje operację wstawienia nowego rekordu, druga próba używa już zajętego identyfikatora. Podobny problem występuje, gdy aplikacja generuje identyfikatory lokalnie i kilka stanowisk roboczych utworzy tę samą wartość. Błąd może także wynikać z nieprawidłowej synchronizacji danych, wielokrotnego importu tego samego pliku albo niewłaściwego rozróżnienia między dodaniem a aktualizacją rekordu. Import powinien ustalić, czy dany element już istnieje, i odpowiednio wybrać operację aktualizacji lub pomijać duplikat zgodnie z przyjętą logiką. Ważne jest również sprawdzenie, czy aplikacja prawidłowo obsługuje ponowienia po zerwaniu połączenia. Zapis mógł zostać wykonany, choć odpowiedź nie dotarła do programu, a automatyczne ponowienie może wtedy spowodować próbę drugiego zapisu. Rozpoznanie problemu i bezpieczne przywrócenie działaniaDiagnostykę należy rozpocząć od ustalenia, jaka operacja została odrzucona, jaka wartość była zapisywana oraz które ograniczenie unikalności zgłosiło konflikt. Pomocne są logi aplikacji, identyfikator żądania, czas wystąpienia błędu i dane wejściowe przekazane do operacji. Następnie trzeba sprawdzić, czy rekord o takim kluczu już istnieje oraz czy jest prawidłowy. Jeżeli istnieje właściwy rekord, rozwiązaniem może być korekta logiki aplikacji, aby ponowne żądanie było traktowane jako aktualizacja albo jako bezpieczne powtórzenie wcześniej wykonanej operacji. Nie należy usuwać ograniczenia unikalności tylko po to, aby zapis został przyjęty. Taka zmiana może doprowadzić do powstania niejednoznacznych rekordów i utrudnić późniejsze wyszukiwanie, rozliczenia lub powiązanie danych. Przed modyfikacją danych trzeba wykonać kopię zapasową i ustalić, czy duplikat jest błędem, czy wynikiem zamierzonej operacji. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i podzespołów, dlatego przy problemie z aplikacją na komputerze można rozpocząć od sprawdzenia systemu, programu, połączenia oraz warunków, w których pojawia się komunikat o naruszeniu unikalności. |