Wiecie czemu ID_Muzyka zaczyna liczenie od 5, wcześniej gdy wpisałem 2 rekordy zaczynał liczenie od 3

Rekord nie zaczyna od 1 SQL
- Rejestracja: dni
- Ostatnio: dni
- Postów: 3
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Silesia/Marki
- Postów: 5555
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)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2310
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
- Rejestracja: dni
- Ostatnio: dni
- Postów: 3
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
- Rejestracja: dni
- Ostatnio: dni
- Postów: 3892
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
- Rejestracja: dni
- Ostatnio: dni
Panczo napisał(a):
Jeżeli masz kolumnę identity, to
DELETEna 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.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: 700m n.p.m.
- Postów: 681
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.