Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Problème de clé étrangère avec plusieurs bases de données dans une transaction

Eh bien, Id les colonnes ne sont pas des "clés" significatives, et elles vous feront trébucher partout. Ils sont censés être des identifiants physiques sans signification, et vous leur avez attaché une signification. Lorsque vous exigez que les mêmes Ids existent dans une autre base de données.

Avez-vous résolu la violation FK ? Vous avez très probablement un Id totalement différent pour la ligne DB1, dans DB2; et certainement des Ids parents différents .

Vous devez toujours ne pas spécifier un Id valeur, et laissez le serveur la remplir, ou toujours spécifier un Id valeur, dans les deux bases de données.

Le deuxième problème est que vous ne pensez pas de manière transactionnelle. Les transactions multi-db ne posent aucun problème. Alors oubliez le Id colonne, ce qu'elle contient, et utilisez les vraies clés de la table, dans les deux Dbs. Les ids sera différent, mais peu importe (cela signifie libérer le besoin d'attacher une signification à l'identifiant sans signification).