sql >> Database >  >> RDS >> Sqlserver

Er zijn geen primaire of kandidaat-sleutels in de tabel waarnaar wordt verwezen die overeenkomen met de lijst met verwijzende kolommen in de externe sleutel

Buitenlandse sleutels werken door een kolom te koppelen aan een unieke sleutel in een andere tabel, en die unieke sleutel moet worden gedefinieerd als een of andere vorm van unieke index, of het nu de primaire sleutel is, of een andere unieke index.

Op dit moment is de enige unieke index die u heeft een samengestelde index op ISBN, Title wat uw primaire sleutel is.

Er zijn een aantal opties voor u open, afhankelijk van wat BookTitle precies bevat en de relatie tussen de gegevens erin.

Ik vermoed dat het ISBN uniek is voor elke rij in BookTitle. IN de veronderstelling dat dit het geval is, wijzigt u uw primaire sleutel zodat deze alleen op ISBN staat en wijzigt u BookCopy zodat u in plaats van Titel een ISBN heeft en daaraan meedoet.

Als u uw primaire sleutel wilt behouden als ISBN, Title dan moet u ofwel het ISBN in BookCopy opslaan, evenals de titel, en de externe sleutel in beide kolommen, OF u moet een unieke index op BookTitle (Title) maken als een afzonderlijke index.

Meer in het algemeen moet u ervoor zorgen dat de kolom of kolommen in uw REFERENCES clausule exact overeenkomen met een unieke index in de bovenliggende tabel:in jouw geval mislukt het omdat je geen enkele unieke index hebt op Title alleen.



  1. SQL Server AlwaysOn-beschikbaarheidsgroepen:installatie en configuratie, deel 2

  2. Hoe FRD-tracering te genereren in Oracle Apps 11i/R12

  3. SQLServer IDENTITY Kolom met tekst

  4. Android met Room - Hoe een externe sleutel nullable in te stellen