Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Problem z kluczem obcym z wieloma bazami danych w jednej transakcji

Cóż, Id kolumny nie są znaczącymi "kluczami" i będą cię potykać w każdym miejscu. Mają być bezsensownymi, fizycznymi identyfikatorami, a ty nadałeś im znaczenie. Gdy żądasz tych samych Ids istnieją w innej bazie danych.

Czy rozwiązałeś naruszenie FK? Najprawdopodobniej masz zupełnie inny Id dla wiersza DB1 w DB2; i na pewno różne nadrzędne Ids .

Musisz konsekwentnie nie określ Id wartość i pozwól serwerowi ją wypełnić lub zawsze określ Id w obu bazach danych.

Drugim problemem jest to, że nie myślisz transakcyjnie. Transakcje wielobazowe nie stanowią żadnego problemu. Zapomnij więc o Id kolumna, co zawiera, i użyj prawdziwych kluczy dla tabeli, w obu Dbs. Ids będzie inny, ale kogo to obchodzi (oznacza to uwolnienie potrzeby przypisywania znaczenia do bezsensownego identyfikatora).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak utworzyć osadzony plik bazy danych SQL 2008, jeśli nie istnieje?

  2. JSON_VALUE() Przykłady w SQL Server (T-SQL)

  3. Konwertowanie pliku SQL2008 RDL na SQL2005

  4. Zapytanie SQL Server w celu znalezienia wszystkich aktualnych nazw baz danych

  5. Kod regex, jak filtrować wszystkie nazwy, które zawierają tylko liczby i kończą się na .jpg i/lub _number.jpg?