Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Problema de chave estrangeira com vários db em uma transação


Bem, Id as colunas não são "chaves" significativas, e elas vão te enganar em todos os lugares. Eles deveriam ser identificadores físicos sem sentido, e você atribuiu significado a eles. Quando você exige que os mesmos Ids existem em outro banco de dados.

Você resolveu a violação FK? Muito provavelmente você tem um Id totalmente diferente para a linha do DB1, no DB2; e certamente diferentes Ids pai .

Você precisa não consistentemente especifique um Id valor e deixe que o servidor o preencha ou sempre especifique um Id valor, em ambas as bases de dados.

O segundo problema é que você não está pensando transacionalmente. Transações multi-db não são problema algum. Então esqueça o Id coluna, o que ela contém e use as chaves reais para a tabela, em ambos os Dbs. Os ids será diferente, mas quem se importa (isso significa liberar a necessidade de anexar significado ao identificador sem sentido).