Moje pytania to
jak zwiększyć wartość kolumny o 1.
Na przykład załóżmy, że kolumna ID
ma wartości 1, 2, 3, 4, ..
Teraz, gdy zaktualizuję tę tabelę, ID
kolumna powinna wzrosnąć o 1,
Teraz ID
stanie się 2,3,4,5, ..
sql-server-2005
Varinder
źródło
źródło
Odpowiedzi:
Aby dodać jeden do każdej wartości w tabeli ...
UPDATE myTable SET ID = ID + 1
Aby utworzyć nową wartość, o jedną więcej niż poprzednia najwyższa (zwykle), użyj kolumny z IDENTITY
źródło
ISNULL
oświadczenia :UPDATE myTable SET ID = ISNULL(ID, 0) + 1
(Zaczerpnięte z tej odpowiedzi SO )SET [Lic] = [Lic] + @dif
. Uwaga Zmienna @dif może być dodatnia, 0 lub ujemnaJeśli chcesz mieć unikalny numer dla każdego wiersza generowany automatycznie, jest to TOŻSAMOŚĆ zgodnie z odpowiedzią Neila.
Jeśli za każdym razem, gdy aktualizujesz tabelę, chcesz zwiększyć wartości (tj. Nie są to klucze):
Update MyTable Set IDColumn = IDColumn + 1 Where <whatever>
źródło
Spróbuj tego:
Update Emp set testCount = ISNULL(testCount, 0) + 1 where testId=1
źródło
Możesz użyć,
IDENTITY
które zrobi to za Ciebie.CREATE TABLE [dbo].[MyTable]( [MyTableID] [int] IDENTITY(1,1) NOT NULL, -- Other columns )
Kiedy wstawisz swój pierwszy rekord, otrzymasz
Id
1.źródło
W Oracle kod jest nieco bardziej skomplikowany.
Będziesz musiał utworzyć pole autoinkrementacji z obiektem sekwencji (ten obiekt generuje sekwencję liczb).
Użyj następującej składni CREATE SEQUENCE:
CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10
Powyższy kod tworzy obiekt sekwencji o nazwie seq_person, który zaczyna się od 1 i będzie zwiększany o 1. Będzie również buforował do 10 wartości w celu zwiększenia wydajności. Opcja pamięci podręcznej określa, ile wartości sekwencji będzie przechowywanych w pamięci, aby uzyskać szybszy dostęp.
Aby wstawić nowy rekord do tabeli „Persons”, będziemy musieli skorzystać z funkcji nextval (ta funkcja pobiera następną wartość z sekwencji seq_person):
INSERT INTO Persons (ID,FirstName,LastName) VALUES (seq_person.nextval,'Lars','Monsen')
Powyższa instrukcja SQL wstawiłaby nowy rekord do tabeli „Osoby”. Kolumnie „ID” zostanie przypisany kolejny numer z sekwencji seq_person. Kolumna „FirstName” zostanie ustawiona na „Lars”, a kolumna „LastName” zostanie ustawiona na „Monsen”.
źródło
Możesz spróbować następujących rzeczy:
DECLARE @i INT SET @i = @@ROWCOUNT + 1 INSERT INTO YourTable (Identity Column) VALUES (@i + 1)
źródło