2016-01-06 27 views
6

Tôi có một bảng có cột (orderid), IDENTITY của nó được đặt thành true. Bây giờ tôi muốn thiết lập nó đi. Làm thế nào tôi có thể làm điều đó với ALTER COLUMN? Một số điều như thế này?Thay đổi bảng để đặt IDENTITY thành tắt

ALTER TABLE MyTable 
ALTER Column MyColumn SET IDENTITY OFF 

Trả lời

6

Khi cột sắc được thiết lập bạn không thể loại bỏ nó hoặc bạn không thể đặt nó là OFF.

Bạn có thể phải bỏ cột bằng cách sao chép dữ liệu vào một số cột khác trước tiên (không có nhận dạng). Vì vậy, nó sẽ giống như thêm một cột mới vào bảng của bạn và sao chép các giá trị của cột nhận dạng hiện tại của bạn vào cột đó. Sau đó thả cột cũ (có nhận dạng) và cuối cùng đổi tên cột mới thành tên cột cũ.

6

Bạn phải sử dụng SET IDENTITY_INSERT TO ON. Nếu bạn đặt nó là ON thì bạn nên chuyển giá trị một cách rõ ràng tới cột ID.

Tại sao bạn nên tắt Nhận dạng? Có thể bạn đang cố gắng chuyển một số giá trị rõ ràng.

Vui lòng tham khảo bản trình diễn mẫu tại đây.

-- Create tool table. 
CREATE TABLE dbo.Tool 
    (
    ID INT IDENTITY NOT NULL PRIMARY KEY, 
    NAME VARCHAR(40) NOT NULL 
); 

GO 

-- Inserting values into products table. 
INSERT INTO dbo.Tool 
      (NAME) 
VALUES  ('Screwdriver'), 
      ('Hammer'), 
      ('Saw'), 
      ('Shovel'); 

GO 

-- Create a gap in the identity values. 
DELETE dbo.Tool 
WHERE NAME = 'Saw'; 

GO 

SELECT * 
FROM dbo.Tool; 

GO 

-- Try to insert an explicit ID value of 3; 
-- should return a warning. 
INSERT INTO dbo.Tool 
      (ID, 
      NAME) 
VALUES  (3, 
      'Garden shovel'); 

GO 

-- SET IDENTITY_INSERT to ON. 
SET IDENTITY_INSERT dbo.Tool ON; 

GO 

-- Try to insert an explicit ID value of 3. 
INSERT INTO dbo.Tool 
      (ID, 
      NAME) 
VALUES  (3, 
      'Garden shovel'); 

GO 

SELECT * 
FROM dbo.Tool; 

GO 

-- Drop products table. 
DROP TABLE dbo.Tool; 

GO 
4

Bạn có thể làm điều này trong 4 bước

  1. Hãy Cột mới
  2. Sao chép dữ liệu vào đó Cột
  3. Xóa cột cũ
  4. Đổi tên cột mới để cũ một
Các vấn đề liên quan