J'ai une table qui manque une colonne dans sa contrainte de clé primaire. Au lieu de le modifier via SQL Server, je souhaite le mettre dans un script pour l'ajouter dans nos scripts de mise à jour.
Quelle syntaxe puis-je utiliser pour cela? Dois-je supprimer et recréer la contrainte de clé?
sql-server
Jason
la source
la source
Réponses:
Oui. Le seul moyen serait de supprimer la contrainte avec une table Alter puis de la recréer.
la source
alter table PatientsInfo drop constraint PK__Patients__1CBB51380A338187
fonctionne icidb
.table
DROP PRIMARY KEY, AJOUT PRIMARY KEY (id1
,id2
);PRIMARY KEY CONSTRAINT
ne peut pas être modifié, vous ne pouvez que le supprimer et le créer à nouveau. Pour les grands ensembles de données, cela peut entraîner une longue durée d'exécution et donc une indisponibilité de la table.la source
En termes de performances, il est inutile de conserver les index non clusterisés pendant ce temps, car ils seront remis à jour lors de la suppression et de la création. S'il s'agit d'un ensemble de données volumineuses, vous devriez envisager de renommer la table (si possible, des paramètres de sécurité dessus?), Recréer une table vide avec les clés appropriées pour y migrer toutes les données. Vous devez vous assurer que vous disposez de suffisamment d'espace pour cela.
la source
Dans mon cas, je souhaite ajouter une colonne à une clé primaire (colonne4). J'ai utilisé ce script pour ajouter column4
la source
vous pouvez renommer les objets de contrainte à l'aide de sp_rename (comme décrit dans cette réponse )
par exemple:
la source