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

SQL Server:nie można utworzyć relacji

Klucz podstawowy w tabeli Person jest prawdopodobnie tożsamością. To jest automatycznie zwiększające się pole całkowite.

Musisz wprowadzić klucz obcy w tabeli adresów typu int, a nie tożsamość. Będzie przechowywał liczby całkowite odpowiadające rekordom osoby, ale nie chcesz, aby klucz obcy był automatycznie zwiększany. Dla każdego rekordu w tabeli podrzędnej (adres) ustawisz określoną wartość klucza obcego, wskazując, do którego rekordu nadrzędnego (osoba) on należy.

Przykład:

INSERT person (firstname, lastname) VALUES ('John', 'Smith')

Spowoduje to wstawienie nowego rekordu osoby i pola personid zostanie wypełnione automatycznie, ponieważ jest to pole IDENTITY.

Teraz, aby wstawić adres od Jana Kowalskiego, musisz znać jego personid . Na przykład:

-- Say, for example, personid of John Smith is 55
INSERT address (personid, street, city) VALUES (55, 'High Street', 'London')

Więc w person tabela personid jest generowany automatycznie, ale w address tabeli określasz wartość, która pasuje do istniejącej osoby. To jest cały sens klucza obcego.

Bez dodatkowych informacji o schemacie trudno jest odgadnąć problem.



  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 przekonwertować uniksowy znacznik czasu na wartość daty/godziny w SQL Server

  2. Zmień nazwę tabeli w SQL Server (T-SQL)

  3. Typowe błędy DBA w MS SQL Server

  4. Jak usunąć puste wiersze z wyniku zapytania sql?

  5. Jak wygenerować skrypt INSERT dla istniejącej tabeli programu SQL Server, która zawiera wszystkie przechowywane wiersze?