Bạn không thể thêm IDENTITY
vào cột hiện tại. Nó không thể được thực hiện.
Bạn sẽ cần phải tạo ra một mới cột kiểu INT IDENTITY
và sau đó thả các cột cũ bạn không cần nữa (và có thể đổi tên các cột mới cho tên cũ - nếu điều đó là cần thiết)
Ngoài ra: Tôi sẽ không làm điều này trong trình thiết kế trực quan - điều này sẽ cố gắng tạo lại bảng với cấu trúc mới, sao chép trên tất cả dữ liệu (tất cả 10 triệu hàng), rồi thả bảng cũ. Việc sử dụng các câu lệnh T-SQL thẳng sẽ hiệu quả hơn nhiều - điều này sẽ thực hiện cập nhật "tại chỗ", không phá hủy (không có dữ liệu bị mất), và không cần sao chép khoảng 10 triệu hàng trong quá trình ...
ALTER TABLE dbo.YourTable
ADD NewID INT IDENTITY(1,1) NOT NULL
Khi bạn thêm một cột mới của loại INT IDENTITY
để bàn của bạn, sau đó nó sẽ được tự động điền số liên tiếp. Bạn không thể ngừng điều này xảy ra và bạn cũng không thể cập nhật các giá trị sau này.
Cả trong những lựa chọn thực sự rất hữu ích, cuối cùng - bạn có thể kết thúc với giá trị ID khác nhau .... để làm điều này đúng, bạn phải:
- tạo bảng mới trước thời hạn, với cấu trúc hợp lý và
IDENTITY
đã ở vị trí
- sau đó bật
SET IDENTITY_INSERT (yourtable) ON
trên bàn mà để cho phép các giá trị được chèn vào cột sắc
- bản sao trên dữ liệu này từ nguồn gốc
- tắt agai chèn nhận dạng n:
SET IDENTITY_INSERT (yourtable) OFF
Chỉ với phương pháp này bạn mới có thể nhận cùng một ID trong cột IDENTITY trong bảng mới.
Nguồn
2011-12-28 16:26:57
Vì vậy, một cái gì đó như thế này đã cho bạn một thời gian chờ? 'alter table TableName thêm ID int identity (1, 1) primary key' –
Bạn có thể sử dụng' ALTER TABLE ... SWITCH' để làm điều này gần như ngay lập tức. Ngay cả trên một bảng 10 triệu hàng. –
có thể trùng lặp của [cách đặt tăng tự động sau khi tạo bảng mà không bị mất dữ liệu?] (Http://stackoverflow.com/questions/6084572/how-to-set-auto-increment-after-creating-a-table - không có dữ liệu nào mất) –