1

Temat: [PL/pgSQL] powtarzające się wpisy

Witam, chciałbym zadać pytanie bardziej zaawansowanym. Posiadam skrypt:

INSERT INTO odleglosci
    VALUES (nextval('seq_odleglosci'),33,22,44) RETURNING id_odleglosci INTO v_id_odleglosci;


wpisuje on nowe dane do tabeli i zwraca id wstawionego rekordu. A teraz PYTANIE wink czy istnieje jakiś szybki sposób sprawdzając czy w tabeli nie istnieje już dokładnie taki sam rekord jak ten który chce wstawić? i zwróci jego id

2

Odp: [PL/pgSQL] powtarzające się wpisy

Trochę mnie dziwi twoje podejście do rozwiązania problemu, może masz jakieś powody by w insercie wykorzystywać polecenie nextval ale dużo łatwiej zadeklarować pole id_odleglosci jako serial, wtedy nie musisz go podawać w insercie.

Odpowiedzią na twoje pytanie jest wykorzystanie polecenie CREATE UNIQUE INDEX dla tej tabeli. Index na trzy pola z danymi zapobiegnie wprowadzaniu duplikatów do tabeli. Nie zapomnij, że z poziomu aplikacji klienckiej musisz wykorzystać odpowiednią obsługę błędów.