2016-01-06 22 views
6

Ho una tabella, che ha una colonna (orderid), la cui IDENTITY è impostata su true. Ora vorrei accenderlo. Come posso farlo con ALTER COLUMN? Qualcosa del genere?Modifica tabella per impostare IDENTITY su off

ALTER TABLE MyTable 
ALTER Column MyColumn SET IDENTITY OFF 

risposta

6

Una volta che la colonna di identità è impostata si non è possibile rimuovere o non è possibile impostarlo su OFF.

Probabilmente è necessario eliminare la colonna copiando prima i dati in un'altra colonna (che non ha l'identità). Quindi sarebbe come aggiungere una nuova colonna alla tua tabella e copiare i valori della colonna di identità esistente su di essa. Quindi rilasciare la colonna precedente (con identità) e infine rinominare la nuova colonna con il nome della vecchia colonna.

6

È necessario utilizzare SET IDENTITY_INSERT su ON. Se lo si imposta come ON, è necessario passare esplicitamente i valori alla colonna ID.

Perché dovresti spegnere l'identità? Potrebbe essere che stai cercando di passare alcuni valori espliciti.

Fare riferimento alla demo di esempio qui.

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

È possibile farlo in 4 passi

  1. fare nuove Colonna
  2. Copia dati per quella colonna
  3. Rimuovere antica colonna
  4. Rinominare nuova colonna alla vecchia
Problemi correlati