2009-08-14 29 views
38

Tôi có một bảng Orders với các lĩnh vực sau:Đặt giá trị khởi đầu cho cột với autoincrement

Id | SubTotal | Tax | Shipping | DateCreated

Cột Id được thiết lập để autoincrement(1,1).

Điều này sẽ được sử dụng trong mặt tiền cửa hàng thương mại điện tử. Đôi khi, một cửa hàng thương mại điện tử hiện tại được di chuyển đến nền tảng của tôi và họ đã có đơn đặt hàng - điều này có nghĩa là Order.Id hiện tại của họ là, ví dụ: 9586.

Tôi muốn có trường bắt đầu từ autoincrement từ giá trị đó.

Tôi làm cách nào để thực hiện việc này?

Trả lời

70

Từ Resetting SQL Server Identity Columns:

Lấy danh tính cho bảng Employees:

DBCC checkident ('Employees') 

Sửa chữa hạt nhân dân (nếu vì một lý do cơ sở dữ liệu được chèn sắc trùng lặp):

DBCC checkident ('Employees', reseed) 

Thay đổi hạt sắc cho bảng Employees đến 1000:

DBCC checkident ('Employees', reseed, 1000) 

Hàng tiếp theo được chèn sẽ bắt đầu tại 1001.

21

Bạn cần phải đặt hạt giống nhận dạng để giá trị đó:

CREATE TABLE orders 
(
id int IDENTITY(9586,1) 
) 

Để thay đổi một bảng hiện tại:

ALTER TABLE orders ALTER COLUMN Id IDENTITY (9586, 1); 

Thông tin thêm về CREATE TABLE (Transact-SQL) IDENTITY (Property)

+3

Lệnh ALTER TABLE ở trên không có tác dụng trong Microsoft SQL Server 2012. Lỗi này cho biết: "Cú pháp sai gần từ khóa 'IDENTITY'". Tuy nhiên, lệnh DBCC trong câu trả lời được chấp nhận đã hoạt động chính xác. –

9

Cũng lưu ý rằng bạn thường không thể đặt giá trị cho cột IDENTITY. Tuy nhiên, bạn có thể chỉ định danh tính của các hàng nếu bạn đặt IDENTITY_INSERT thành BẬT cho bảng của mình. Ví dụ:

SET IDENTITY_INSERT Orders ON 

-- do inserts here 

SET IDENTITY_INSERT Orders OFF 

Chèn này sẽ đặt lại danh tính về giá trị được chèn cuối cùng. Từ MSDN:

If the value inserted is larger than the current identity value for the table, SQL Server automatically uses the new inserted value as the current identity value.

+0

chỉ là những gì tôi đã làm sau - rất hữu ích cho việc điền một cơ sở dữ liệu mà tôi đã di chuyển từ một mysql php đến một ứng dụng C# MVC – pigeon

Các vấn đề liên quan