Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pole UNIQUE + przeskok sekwencji
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
phpion
Witam,
dopiero zaczynam poznawać PostgreSQL i jedna rzecz mi nie pasuje.

Otóż mam tabelę, w której mam pola:
id SERIAL,
nazwa VARCHAR(20) z założonym indeksem UNIQE.
Mając w tabeli przykładowe dane:
id = 1, nazwa = "a",
id = 2, nazwa = "b"
przy próbie wpisania rekordu, w którym nazwa = "b" otrzymuję błąd duplikacji klucza unikalnego. Czyli fajowo. Jednak dopisując później rekord o wartości nazwa = "c" sekwencja przeskakuje z 3 na 4 (tak jakby poprzednia operacja została wykonana, po czym cofnięta - sekwencja i tak się poprzednio wykonała). Dla pewności porównałem to działanie MySQL i tam kolejny numer jest nadawany jako 3.

Pytanie: w jaki sposób "zatrzymać" wykonywanie sekwencji przy próbie wpisania wartości do pola unikalnego w przypadku, gdy takowa wartość już istnieje? Jest na to jakaś rada?
dr_bonzo
1. po co ci to?
2. najpierw sprawdz czy juz nie istnieje taki rekord, jaki chcesz wstawiac
3.
http://www.postgresql.org/docs/7.4/interac...s-sequence.html
mozesz sobie wykombinowac tak zeby przy wstawianiu brac current_value, a triggerem po wstawieniu przejsc sekwencja o +1
phpion
1. Do tej pory w MySQL po prostu wstawiałem dany rekord bez sprawdzania i po błędzie rozpoznawałem czy chodzi o duplikację czy o coś innego.
2. Takiej możliwości mam świadomość smile.gif
3. Babranie się z triggerami chyba jest w tym przypadku zbędnę. Po prostu będę sprawdzał czy dany rekord nie występuje już w bazie.
Dzięki za odpowiedź.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.