J'essaie d'ajouter par programme une colonne d'identité à une table Employees. Pas sûr de ce que je fais mal avec ma syntaxe.
ALTER TABLE Employees
ADD COLUMN EmployeeID int NOT NULL IDENTITY (1, 1)
ALTER TABLE Employees ADD CONSTRAINT
PK_Employees PRIMARY KEY CLUSTERED
(
EmployeeID
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
Qu'est-ce que je fais mal? J'ai essayé d'exporter le script, mais SQL Mgmt Studio effectue un changement complet du nom de la table temporaire.
UPDATE: Je pense que cela étouffe la première instruction avec "Syntaxe incorrecte près du mot clé" COLUMN "."
Il suffit de retirer COLUMN
de ADD COLUMN
ALTER TABLE Employees
ADD EmployeeID numeric NOT NULL IDENTITY (1, 1)
ALTER TABLE Employees ADD CONSTRAINT
PK_Employees PRIMARY KEY CLUSTERED
(
EmployeeID
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
Voici comment Ajouter une nouvelle colonne à la table
ALTER TABLE [tableName]
ADD ColumnName Datatype
E.g
ALTER TABLE [Emp]
ADD Sr_No Int
Et si vous voulez le faire auto incrémenté
ALTER TABLE [Emp]
ADD Sr_No Int IDENTITY(1,1) NOT NULL
La syntaxe correcte pour ajouter une colonne dans la table est la suivante:
ALTER TABLE table_name
ADD column_name column-definition;
Dans votre cas ce sera:
ALTER TABLE Employees
ADD EmployeeID int NOT NULL IDENTITY (1, 1)
Pour ajouter plusieurs colonnes, utilisez des crochets:
ALTER TABLE table_name
ADD (column_1 column-definition,
column_2 column-definition,
...
column_n column_definition);
Le mot clé COLUMN
dans SQL SERVER est utilisé uniquement pour modifier:
ALTER TABLE table_name
ALTER COLUMN column_name column_type;
Vous pourriez renommer la table temporaire si vous essayez d’ajouter une colonne au début de la table (ce qui est plus facile que de modifier l’ordre). De plus, s'il y a des données dans la table Employees, il faut insérer insert * pour pouvoir calculer le EmployeeID.