Mam poniższej tabeli w PostgreSQL:postgres AutoIncrement nie są aktualizowane na wyraźną id wstawia
CREATE TABLE "test" (
"id" serial NOT NULL PRIMARY KEY,
"value" text
)
robie następujące wstawki:
insert into test (id, value) values (1, 'alpha')
insert into test (id, value) values (2, 'beta')
insert into test (value) values ('gamma')
w pierwszych 2 wkładkami ja wyraźnie podając identyfikator . Jednak wskaźnik automatycznego przyrostu tabeli nie jest w tym przypadku aktualizowany. Stąd w 3 wkładki pojawia się błąd:
ERROR: duplicate key value violates unique constraint "test_pkey"
DETAIL: Key (id)=(1) already exists.
nigdy w obliczu tego problemu w MySQL w obu silnikach MyISAM i InnoDB. Jawny czy nie, mysql zawsze aktualizuje wskaźnik autoinkrecji oparty na max id-wiersza.
Jakie jest obejście tego problemu w postgresie? Potrzebuję go, ponieważ chcę ściślejszej kontroli dla niektórych identyfikatorów w moim stole.
AKTUALIZACJA: Potrzebuję go, ponieważ w przypadku niektórych wartości muszę mieć stały identyfikator. W przypadku innych nowych wpisów nie mam nic przeciwko tworzeniu nowych.
myślę, że może to być możliwe dzięki ręcznie zwiększając wskaźnik nextval
do max(id) + 1
gdy jestem jawnie wstawianie identyfikatory. Ale nie jestem pewien, jak to zrobić.
@ Milen-a-Radev +1, dzięki, że to zrobił! – jerrymouse
Dziwne zachowanie. Pochodzę również z MySQL. Dziękuję Ci! –
Wpadłem na ten sam problem i między tobą a http://www.ruby-forum.com/topic/64428#72333 (w zasadzie mówisz to samo) rozwiązałeś mój problem. Dzięki. – marsol0x