2016-01-06 64 views
6

我有一個表,它有一個列(orderid),其IDENTITY設置爲true。現在我想把它關掉。我怎麼能用ALTER COLUMN來做到這一點?改變表設置IDENTITY關

ALTER TABLE MyTable 
ALTER Column MyColumn SET IDENTITY OFF 

回答

6

一旦標識列設爲您不能刪除它,或者你不能將其設置爲OFF。

您可能必須首先將數據複製到其他列(,其沒有標識),以刪除該列。所以這就像將一個新列 添加到您的表中並將現有標識列的值複製到它。然後刪除舊列(,標識爲),最後將新列重命名爲舊列名。

6

您必須使用SET IDENTITY_INSERT TO ON。如果將其設置爲ON,則應該明確地將值傳遞給ID列。

爲什麼要關閉身份?也許你正試圖傳遞一些明確的價值。

請參考這裏的示例演示。

-- 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

你可以在4個操作步驟,

  1. 結交新列
  2. 將數據複製到該列
  3. 刪除舊列
  4. 重命名新列舊