Sql auto inkrementacja w funkcji

0

Witam,

Jak w temacie szukam pomocy jak zrobić auto inkrementacje pola ID w SQL lecz za pomocą funkcji.

Stworzyłem funkcję która dodaje użytkowników coś typu Select dodaj('10','Tomek',20,'Bydgoszcz');
Gdzie pierwsze pole odpowiada ID, i gdy już istnieje dane ID chciałbym aby funkcja sama wyszukiwała największe ID i je podstawiała na razie wymyśliłem takie rozwiązanie lecz nie działa

INSERT INTO spis (id, imię , wiek , miejscowość)
VALUES ((Select Max(id)+1 from spis),imię , wiek , miejscowość);

Tą inkrementacje +1 umiejscowiłem w różnych miejscach zawsze zwraca ten sam błąd czyli

ERROR: BŁĄD: nazwa kolumny "id" jest niejednoznaczna

Jakieś porady jak to rozwiązać?

2

A po co? Jak już tak chcesz to zrób selecta przed insertem i zadbaj o blokowanie tabeli zeby ktoś Ci z boku nie wcisnął w międzyczasie twojego id

0

Napotkałem kolejny problem a mianowicie zdefiniowałem ograniczenie integralnościowe typu UNIQUE dla pola iD które dba o niepowtarzalność ID w obrębie całej tej relacji i jak chcę dodać teraz nową osobę za pomocą mojej funkcji to mam błąd iż naruszyłem to ograniczenie,

ALTER TABLE spis ADD CONSTRAINT ograniczenie UNIQUE(id) NOT NULL AUTO_INCREMENT;

i teraz moje pytanie chciałbym dodać wyjątek czyli
EXCEPTION
czy można w jakiś sposób wyłapać to ograniczenie które dodałem?
bo coś typu WHEN ograniczenie THEN nie działa.

a co do pytania po co to robię to są zadania z powtórki a niedługo egzamin :P

2

po to jest to autoincremet żebyś tam nie grzebał! a jak potrzebujesz licznik bez dziur to go sobie zaimplementuj obok a pole autoinc zostaw w spokoju

1 użytkowników online, w tym zalogowanych: 0, gości: 1