J'ai une table, qui a une colonne (orderid), dont son IDENTITY est définie sur true. Maintenant, je voudrais le déclencher. Comment puis-je faire cela avec ALTER COLUMN? Quelque chose comme ça?
ALTER TABLE MyTable
ALTER Column MyColumn SET IDENTITY OFF
Une fois la colonne d'identité définie, vous ne pouvez pas la supprimer ou vous ne pouvez pas la désactiver.
Vous devez probablement supprimer la colonne en copiant d'abord les données dans une autre colonne ( qui n'a pas l'identité ). Ce serait donc comme ajouter une nouvelle colonne à votre table et y copier les valeurs de votre colonne d'identité existante. Déposez ensuite l'ancienne colonne ( ayant l'identité ) et renommez enfin la nouvelle colonne en l'ancien nom de colonne.
Vous devez utiliser SET IDENTITY_INSERT TO ON. Si vous le définissez sur ON, vous devez explicitement transmettre des valeurs à la colonne ID.
Pourquoi devriez-vous désactiver l'identité? Vous essayez peut-être de transmettre des valeurs explicites.
Veuillez consulter l'exemple de démonstration ici.
-- 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
Vous pouvez le faire en 4 étapes