Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Đọc và tăng giá trị int trong SQL Server

Các số lô có phải là thứ tự không? Tại sao không chỉ sử dụng identity ? Điều này tốt hơn về mặt đồng thời vì nếu không, bạn cần chặn các nỗ lực chèn đồng thời trong trường hợp chúng bị lùi lại và sẽ để lại khoảng trống trong trình tự.

Nếu nó hoàn toàn là một yêu cầu, tuy nhiên bạn có thể làm

CREATE TABLE dbo.Sequence 
  (
     OneRow CHAR(1) DEFAULT('X') PRIMARY KEY CHECK(OneRow = 'X'),
     val    INT
  )  

Chèn một hàng với một hạt giống ban đầu.

INSERT INTO dbo.Sequence 
            (val)
VALUES     (1)  

Sau đó, để phân bổ một phạm vi đủ kích thước cho phụ trang của bạn (rõ ràng là gọi nó trong cùng một giao dịch)

CREATE PROC dbo.GetSequence
@val AS int OUTPUT,
@n as int =1
AS
UPDATE dbo.Sequence 
SET @val = val = (val + @n);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2008:Thay đổi kiểu dữ liệu hàng loạt

  2. Tôi có thể tìm Thuộc tính biên dịch trước SSIS cho Tác vụ tập lệnh trong SQL Server 2008 ở đâu?

  3. Cách chèn giá trị vào cột IDENTITY trong SQL Server

  4. Sử dụng SET TEXTSIZE để giới hạn dữ liệu được trả về cho mỗi hàng trong SQL Server

  5. Bất kỳ giải pháp nào khác cho SQL Bộ phương tiện có 2 họ phương tiện nhưng chỉ có 1 được cung cấp. Tất cả các thành viên phải được cung cấp. lỗi?