sql >> Databáze >  >> RDS >> Sqlserver

V odkazované tabulce nejsou žádné primární nebo kandidátské klíče, které by odpovídaly seznamu odkazujících sloupců v cizím klíči

Cizí klíče fungují tak, že se sloupec připojí k jedinečnému klíči v jiné tabulce a tento jedinečný klíč musí být definován jako nějaká forma jedinečného indexu, ať už je to primární klíč, nebo nějaký jiný jedinečný index.

V tuto chvíli máte jediný jedinečný index složený z ISBN, Title což je váš primární klíč.

Máte k dispozici řadu možností v závislosti na tom, co přesně obsahuje BookTitle a na vztahu dat v něm.

Hádám, že ISBN je jedinečné pro každý řádek v BookTitle. Za předpokladu, že tomu tak je, změňte svůj primární klíč tak, aby byl pouze na ISBN, a změňte BookCopy tak, abyste místo názvu měli ISBN a připojte se k němu.

Pokud potřebujete zachovat primární klíč jako ISBN, Title pak musíte buď uložit ISBN do BookCopy stejně jako název a cizí klíč v obou sloupcích, NEBO musíte vytvořit jedinečný index pro BookTitle(Title) jako samostatný index.

Obecněji se musíte ujistit, že sloupec nebo sloupce, které máte v REFERENCES klauzule přesně odpovídá jedinečnému indexu v nadřazené tabulce:ve vašem případě se nezdaří, protože v Title nemáte jediný jedinečný index sám.



  1. Nejrychlejší způsob, jak odstranit nečíselné znaky z VARCHAR v SQL Server

  2. Top 5 faktů pro hledání a nahrazování textů SQL na serveru SQL pomocí funkce REPLACE

  3. Jak vyřešit nejednoznačné názvy sloupců při načítání výsledků?

  4. Jak vložit/aktualizovat větší velikost dat v tabulkách Oracle?