Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Fremdschlüsselproblem mit mehreren Datenbanken in einer Transaktion

Nun, Id Spalten sind keine aussagekräftigen "Schlüssel", und sie werden Sie überall stolpern lassen. Sie sollen bedeutungslose, physische Identifikatoren sein, und Sie haben ihnen Bedeutung beigemessen. Wenn Sie verlangen, dass die gleichen Ids in einer anderen Datenbank vorhanden sind.

Haben Sie die FK-Verletzung behoben? Höchstwahrscheinlich haben Sie eine völlig andere Id für die DB1-Zeile in DB2; und sicherlich unterschiedliche übergeordnete Ids .

Sie müssen dies konsequent nicht tun geben Sie eine Id an Wert, und lassen Sie ihn vom Server ausfüllen, oder immer geben Sie eine Id an Wert, in beiden Datenbanken.

Das zweite Problem ist, dass Sie nicht transaktional denken. Multi-DB-Transaktionen sind überhaupt kein Problem. Vergessen Sie also die Id Spalte, was sie enthält, und verwenden Sie die echten Schlüssel für die Tabelle in beiden DBs. Die ids wird anders sein, aber wen interessiert das (das bedeutet, die Notwendigkeit zu beseitigen, dem bedeutungslosen Identifikator eine Bedeutung zuzuordnen).