Pertanyaan saya adalah
cara menaikkan nilai kolom dengan 1.
Misalnya, kolom ID
memiliki nilai 1,2,3,4, ..
Sekarang ketika saya memperbarui tabel ini maka ID
kolom harus bertambah 1,
Sekarang ID
akan menjadi 2,3,4,5, ..
sql-server-2005
Varinder
sumber
sumber
Jawaban:
Untuk menambahkan satu ke setiap nilai di tabel ...
UPDATE myTable SET ID = ID + 1
Untuk membuat nilai baru, satu lebih dari nilai tertinggi sebelumnya (biasanya), gunakan kolom dengan IDENTITAS
sumber
ISNULL
pernyataan seperti ini:UPDATE myTable SET ID = ISNULL(ID, 0) + 1
(Diambil dari jawaban SO ini )SET [Lic] = [Lic] + @dif
. Catatan variabel @dif bisa positif, 0, atau negatifJika Anda ingin memiliki nomor unik untuk setiap baris yang dibuat secara otomatis, ini adalah IDENTITAS sesuai jawaban Neil.
Jika setiap kali Anda memperbarui tabel, Anda ingin meningkatkan nilai (yaitu, mereka bukan kunci):
Update MyTable Set IDColumn = IDColumn + 1 Where <whatever>
sumber
Coba ini:
Update Emp set testCount = ISNULL(testCount, 0) + 1 where testId=1
sumber
Anda dapat menggunakan
IDENTITY
yang akan melakukan ini untuk Anda.CREATE TABLE [dbo].[MyTable]( [MyTableID] [int] IDENTITY(1,1) NOT NULL, -- Other columns )
Saat Anda memasukkan catatan pertama Anda, Anda akan mendapatkan
Id
1.sumber
Di Oracle, kodenya sedikit lebih rumit.
Anda harus membuat bidang kenaikan otomatis dengan objek urutan (objek ini menghasilkan urutan angka).
Gunakan sintaks CREATE SEQUENCE berikut:
CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10
Kode di atas membuat objek urutan yang disebut seq_person, yang dimulai dengan 1 dan akan bertambah 1. Ini juga akan menyimpan hingga 10 nilai untuk kinerja. Opsi cache menentukan berapa banyak nilai urutan yang akan disimpan dalam memori untuk akses lebih cepat.
Untuk memasukkan record baru ke dalam tabel "Persons", kita harus menggunakan fungsi nextval (fungsi ini mengambil nilai berikutnya dari urutan seq_person):
INSERT INTO Persons (ID,FirstName,LastName) VALUES (seq_person.nextval,'Lars','Monsen')
Pernyataan SQL di atas akan memasukkan record baru ke dalam tabel "Persons". Kolom "ID" akan diberi nomor berikutnya dari urutan seq_person. Kolom "FirstName" akan disetel ke "Lars" dan kolom "LastName" akan disetel ke "Monsen".
sumber
Anda bisa mencoba yang berikut ini:
DECLARE @i INT SET @i = @@ROWCOUNT + 1 INSERT INTO YourTable (Identity Column) VALUES (@i + 1)
sumber