Rekord nie zaczyna od 1 SQL

0

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

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)

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

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

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

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.

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:

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.

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