Rekord nie zaczyna od 1 SQL

Rekord nie zaczyna od 1 SQL
Cyprian Kamil
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Wiecie czemu ID_Muzyka zaczyna liczenie od 5, wcześniej gdy wpisałem 2 rekordy zaczynał liczenie od 3
screenshot-20221114122457.png

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5555
8

Co to za baza? oznaczyłeś dwie różne. Normalnie jest tak że tam jest sekwencja (sequence). I nawet jak usuniesz wszystko z tabeli to jeszcze musiałbyś zresetować sekwencje. No, ale takich rzeczy się zwykle nie robi więc pytanie po co ci liczenie od 1

UPDATE tu masz jak zresetować sekwencje w postgresie ALTER SEQUENCE. W innych bazach pewnie jest podobnie. Lub może nawet można to wyklikać z graficznego klienta

UPDATE 2 To jak to jest MSSQL to tu jest wersja dla MSSQLa ALTER SEQUENCE (Transact-SQL)

ZD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2310
3
KamilAdam napisał(a):

No, ale takich rzeczy się zwykle nie robi więc pytanie po co ci liczenie od 1

Dokladnie.
jest wiele błędnych wzorców i oczekiwań zw z id, startem od jedynki, absolutnej ciągłosci itd....

Mozna zgadywac, który z nich dręczy @Cyprian Kamil

Cyprian Kamil
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0
ZrobieDobrze napisał(a):
KamilAdam napisał(a):

No, ale takich rzeczy się zwykle nie robi więc pytanie po co ci liczenie od 1

Dokladnie.
jest wiele błędnych wzorców i oczekiwań zw z id, startem od jedynki, absolutnej ciągłosci itd....

Mozna zgadywac, który z nich dręczy @Cyprian Kamil

Dzięki za pomoc

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3892
3

Po screenach widać, że to MSSQL.

Jeżeli masz kolumnę identity, to DELETE na tabeli nie zmienia ostatniej wartości nadanej przez identity, dlatego dostajesz 5, bo wcześniej miałeś w tabeli wartości od 1-4.
Możesz to zmienić korzystając z dbcc checkident.

Możesz użyć też truncate table, które resetuje wartość seed

ŁF
  • Rejestracja: dni
  • Ostatnio: dni
1
Panczo napisał(a):

Jeżeli masz kolumnę identity, to DELETE na tabeli nie zmienia ostatniej wartości nadanej przez identity, dlatego dostajesz 5, bo wcześniej miałeś w tabeli wartości od 1-4.

Zawinięta transakcja też robi dziury w sekwencji. Ale jakie to ma znaczenie? To tylko identyfikator. Być może równie dobrze mógłbyś użyć GUID.

TR
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: 700m n.p.m.
  • Postów: 681
1

Nawiasem mówiąc, INSERT w taki sposób jest trochę ryzykowny.

Piszę o tym, że masz instrukcję INSERT bez określania kolumn, samo VALUES.

Lepiej to robić tak:

Kopiuj
INSERT INTO tabela (...lista kolumn..) VALUES (...lista wartości...)

Bez tego łatwo o pomyłkę, wystarczy, że dodasz jakąś kolumnę do tabeli, usuniesz, lub zmienisz kolejność, i taki INSERT bez kolumn spowoduje błąd i nic nie doda, albo wprowadzi wartości w zły sposób.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.