Mise à jour de colonne d'auto-incrémentation dans SQL server
J'ai besoin de changer UNE valeur de clé primaire dans une ligne d'un tableau de SQLSERVER 2005 databsae. Le PK est actuellement auto-incrémentation.
Une possibilité est de supprimer temporairement l'auto-incrément de la clé, faire la modification, et de le remettre.
La base de données est en cours de production. Est-il un moyen sécuritaire de faire ce changement sans prendre le DB plus bas?
Pourquoi? Mon client veut un code spécifique pour l'un des enregistrements.
Que suis-je peur? J'ai peur d'enregistrements ajoutés dans la DB, alors que j'ai modifié la clé, et c'est en quelque sorte le désordre d'un index sur une autre table qui utilise le champ comme un FK? Suis-je folle?
- N'oubliez pas que toutes les tables qui font référence à cette clé primaire devra être mis à jour avec la nouvelle valeur à l'avant, vous pouvez supprimer l'ancienne ligne.
Vous devez vous connecter pour publier un commentaire.
La mise à jour ne fonctionne pas - vous aurez à insérer le nouvel enregistrement et de supprimer l'ancien lieu...
Vous ne pouvez mettre à jour via abandon de l'identité et de la re-création. Cependant, vous pouvez également définir l'identité insérer SUR (http://msdn.microsoft.com/en-us/library/aa259221(SQL.80).aspx) et insérer une nouvelle ligne avec l'identité val vous voulez, mettez ident insérer "off", puis supprimer l'ancien. Pourquoi voulez-vous faire cela?
Vous pouvez verrouiller la table pour éviter que d'autres inserts de défaut alors que IDENTITY_INSERT est sur.
EDIT: eh Bien merde, j'ai oublié le peu évident sur la suppression de l'enregistrement d'origine.