Câu hỏi của tôi là
cách tăng giá trị của cột lên 1.
Ví dụ: giả sử một cột ID
có các giá trị 1,2,3,4, ..
Bây giờ khi tôi cập nhật bảng này thì ID
cột sẽ tăng lên 1,
Bây giờ ID
sẽ trở thành 2,3,4,5, ..
Câu hỏi của tôi là
cách tăng giá trị của cột lên 1.
Ví dụ: giả sử một cột ID
có các giá trị 1,2,3,4, ..
Bây giờ khi tôi cập nhật bảng này thì ID
cột sẽ tăng lên 1,
Bây giờ ID
sẽ trở thành 2,3,4,5, ..
Câu trả lời:
Để thêm một vào mọi giá trị trong bảng ...
UPDATE myTable
SET ID = ID + 1
Để tạo một giá trị mới, một giá trị khác sau đó là giá trị cao nhất trước đó (thường), hãy sử dụng cột có IDENTITY
ISNULL
tuyên bố như thế này: UPDATE myTable SET ID = ISNULL(ID, 0) + 1
(Trích từ câu trả lời SO này )
SET [Lic] = [Lic] + @dif
. Lưu ý @dif biến có thể được tích cực, 0, hoặc tiêu cực
Thử đi:
Update Emp set testCount = ISNULL(testCount, 0) + 1 where testId=1
Bạn có thể sử dụng IDENTITY
mà sẽ làm điều này cho bạn.
CREATE TABLE [dbo].[MyTable](
[MyTableID] [int] IDENTITY(1,1) NOT NULL,
-- Other columns
)
Khi bạn chèn bản ghi đầu tiên của mình, bạn sẽ nhận được Id
1.
Trong Oracle, mã phức tạp hơn một chút.
Bạn sẽ phải tạo một trường tăng tự động với đối tượng chuỗi (đối tượng này tạo ra một chuỗi số).
Sử dụng cú pháp CREATE SEQUENCE sau:
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
Đoạn mã trên tạo một đối tượng trình tự được gọi là seq_woman, bắt đầu bằng 1 và sẽ tăng lên 1. Nó cũng sẽ lưu vào bộ đệm tối đa 10 giá trị cho hiệu suất. Tùy chọn bộ nhớ cache chỉ định số lượng giá trị trình tự sẽ được lưu trữ trong bộ nhớ để truy cập nhanh hơn.
Để chèn một bản ghi mới vào bảng "Người", chúng ta sẽ phải sử dụng hàm tiếp theo (hàm này lấy giá trị tiếp theo từ chuỗi seq_ person):
INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')
Câu lệnh SQL ở trên sẽ chèn một bản ghi mới vào bảng "Người". Cột "ID" sẽ được gán số tiếp theo từ chuỗi seq_ person. Cột "FirstName" sẽ được đặt thành "Lars" và cột "LastName" sẽ được đặt thành "Monsen".
Bạn có thể thử những cách sau:
DECLARE @i INT
SET @i = @@ROWCOUNT + 1
INSERT INTO YourTable
(Identity Column)
VALUES
(@i + 1)