sql >> Databasteknik >  >> RDS >> Sqlserver

Utländsk nyckelproblem med flera db i en transaktion

Nåväl, Id kolumner är inte meningsfulla "nycklar", och de kommer att snubbla dig överallt. De ska vara meningslösa, fysiska identifierare, och du har fäst betydelse till dem. När du kräver att samma Ids finns i en annan databas.

Har du löst FK-överträdelsen? Med största sannolikhet har du ett helt annat Id för DB1-raden, i DB2; och säkert olika överordnade Ids .

Du måste konsekvent inte ange ett Id värde och låt servern fylla i det, eller alltid ange ett Id värde, i båda databaserna.

Det andra problemet är att du inte tänker transaktionsmässigt. Multi-db-transaktioner är inga problem alls. Så glöm Id kolumn, vad den innehåller, och använd de riktiga nycklarna för tabellen, i båda Dbs. ids kommer att vara annorlunda, men vem bryr sig (det betyder att du slipper behovet av att fästa mening till den meningslösa identifieraren).



  1. Hanterad ODP.NET-drivrutin visas inte i dialogrutan Datakälla

  2. Konvertera MySQL-schema till Github Wiki?

  3. Hur STRING_ESCAPE()-funktionen fungerar i SQL Server (T-SQL)

  4. NHibernate IPreUpdateEventListener, IPreInsertEventListener sparas inte i DB