2009-06-26 34 views
24

Tôi có một bảng có cột tăng tự động bắt buộc và cột này là một ID rất có giá trị được giữ lại thông qua toàn bộ ứng dụng. Xin lỗi để nói rằng đó là phát triển kém về phía tôi để có được điều này là cột tăng tự động.SQL-Làm thế nào để chèn hàng mà không tự động tăng một cột ID?

Vì vậy, đây là vấn đề. Tôi phải chèn vào bảng này một ID cho cột đã được tạo và xóa khỏi bảng. Loại giống như hồi sinh ID này và đưa nó trở lại vào bảng.

Vì vậy, làm cách nào tôi có thể thực hiện điều này một cách có lập trình thực hiện việc này mà không cần phải tăng giảm cột. Sửa tôi nếu tôi sai, nếu tôi tắt nó theo chương trình, nó sẽ khởi động lại ở 0 hoặc 1 và tôi không muốn điều đó xảy ra ...

+0

Bạn đang sử dụng RDBMS nào? – Quassnoi

+0

Máy chủ MS-SQL cho câu hỏi này ... –

Trả lời

58

Nếu bạn đang ở Microsoft SQL Server, bạn có thể "tắt "tính năng autoincrementing bằng cách phát hành báo cáo kết quả Set Identity_Insert [TableName] On, như trong:

Set Identity_Insert [TableName] On 
    -- -------------------------------------------- 
    Insert TableName (pkCol, [OtherColumns]) 
    Values(pkValue, [OtherValues]) 
    -- ---- Don't forget to turn it back off ------ 
    Set Identity_Insert [TableName] Off 
+0

Cảm ơn, @jvanderh, tôi đã chỉnh sửa để làm rõ –

+0

marc_s là đúng ... bạn có nó ngược lại – jvanderh

+0

Liệu nó có giữ số cuối cùng cho Danh tính gia tăng không? Tôi không muốn nó để thiết lập lại toàn bộ cột Identity nó tự ... –

7

Ngoài Charles' câu trả lời (mà bây giờ là 100% đúng :-) và đó bảo tồn giá trị hiện tại của SẮC trên bàn), bạn cũng có thể muốn kiểm tra giá trị hiện tại của IDENTITY trên bảng - bạn có thể thực hiện điều này bằng lệnh này tại đây:

DBCC CHECKIDENT('YourTableName') 

Nếu bạn đã bao giờ cần phải thực sự thay đổi nó, bạn có thể làm như vậy bằng cách sử dụng lệnh này ở đây:

DBCC CHECKIDENT ('YourTableName', RESEED, (new value for IDENTITY)) 
3

Trên thực tế, các mã trên cho INDENTITY_INSERT là đúng - biến nó ON nói với máy chủ bạn muốn tự chèn các giá trị. Nó cho phép bạn chèn các giá trị vào một cột IDENTITY. Sau đó, bạn muốn tắt nó trở lại (cho phép máy chủ tạo và chèn các giá trị) khi bạn hoàn tất.

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