6
votes

SQL Server: modifier la clé primaire avec des lignes connexes

Je veux changer la valeur de la clé principale d'une ligne d'une table qui a des relations avec d'autres tables:

par exemple xxx

Je veux changer de personne. Id et personne2address.personid

J'essaie quelque chose comme: xxx

mais bien sûr il fournit des conflits :)

Comment puis-je Supprimer temporairement des contraintes de clé étrangère ou y a-t-il un meilleur moyen de changer d'identifiant pour personne?


0 commentaires

3 Réponses :


2
votes

Votre pari le plus facile pour des choses comme ceci est d'utiliser quelque chose comme: xxx

puis déposez les champs d'identification et de personnage et renommez les tempêtes.


1 commentaires

Merci pour la réponse mais cela ressemble à @Marc_s approche semble être plus facile



4
votes

Tout d'abord, la modification de la valeur de la clé principale n'est jamais une bonne idée. Votre objectif principal devrait être d'essayer d'éviter cela par tous les moyens.

Si vous ne pouvez pas éliminer la nécessité de mettre à jour la valeur de la clé principale, votre meilleur choix serait de définir la relation de clé étrangère entre ces deux tables d'utiliser < code> sur la mise à jour cascade , de sorte que toutes les modifications apportées à la clé primaire de la table principale soient automatiquement en cascades à la table enfant.

Pour ce faire, déposez votre relation de clé étrangère existante, puis ajoutez : xxx

qui devrait ensuite mettre à jour automatiquement le Person2Address PERSONID de la valeur si le ID sur la personne change.

Vous devriez être capable d'appeler simplement xxx

et qui devrait être tout ce qu'il y a!


1 commentaires

Code mal testé inséré {0000-0000-0000} la valeur du guid comme pk pour que je veux donc le changer. Merci, je vais essayer



1
votes

Vous pouvez déposer des contraintes FK et les recréer lorsque vous avez terminé.

ALTER TABLE some_table DROP CONSTRAINT my_constraint


0 commentaires