9
votes

Alter table pour définir l'identité sur OFF

J'ai une table, qui a une colonne (orderid), que son identité est définie sur True. Maintenant je voudrais le mettre hors tension. Comment puis-je faire cela avec Alter colonne? Quelque chose comme ça? XXX


1 commentaires

Il suffit de quitter ici les références, car je la cherchais: docs.microsoft.com/en-us/sql/t-sql/statifs/...


3 Réponses :


8
votes

Une fois que la colonne d'identité est définie Impossible de supprimer ou vous ne pouvez pas la définir sur OFF.

Vous devez probablement laisser tomber la colonne en copiant d'abord les données dans une autre colonne ( qui n'a pas l'identité ). Donc, ce serait comme ajouter une nouvelle colonne à votre table et copiez les valeurs de votre colonne d'identité existante. Puis déposez l'ancienne colonne ( ayant une identité ) et enfin renommer la nouvelle colonne sur le nom de la colonne ancien.


2 commentaires

Veuillez noter que vous pouvez réellement modifier la colonne d'identité à l'aide de «conception» (cliquez avec le bouton droit de la souris sur la table dans SSMS) et en ouvrant le panneau 'Propriétés de la colonne'.


@Fraaukje bien, genre de. Cela nécessite que la permission de déposer et de recréer la table, car elle va le faire. Donc, vous perdrez des données qui se trouvaient dans la table.



7
votes

Vous devez utiliser ensemble identity_insert sur ON. Si vous le définissez comme indiqué, vous devez passer explicitement des valeurs à la colonne ID.

Pourquoi devriez-vous éteindre l'identité? Peut-être que vous essayez de passer des valeurs explicites. P>

Veuillez référer la démo de l'échantillon ici. P>

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


0 commentaires

5
votes

Vous pouvez le faire en 4 étapes

  1. faire une nouvelle colonne
  2. Copier des données sur cette colonne
  3. Supprimer l'ancienne colonne
  4. renommer une nouvelle colonne à l'ancien

0 commentaires