Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

В реферираната таблица няма първични или кандидат-ключове, които да съответстват на списъка с референтни колони във външния ключ

Външните ключове работят чрез присъединяване на колона към уникален ключ в друга таблица и този уникален ключ трябва да бъде дефиниран като някаква форма на уникален индекс, било то първичен ключ или някакъв друг уникален индекс.

В момента единственият уникален индекс, който имате, е съставен на ISBN, Title който е вашият първичен ключ.

Има няколко опции, отворени за вас, в зависимост от това какво точно съдържа BookTitle и връзката на данните в него.

Бих рискувал да предположа, че ISBN е уникален за всеки ред в BookTitle. ПРИ предположението, че случаят е такъв, след това променете своя първичен ключ да бъде само на ISBN и променете BookCopy, така че вместо Title да имате ISBN и се присъединете към него.

Ако трябва да запазите своя първичен ключ като ISBN, Title тогава трябва или да съхраните ISBN номера в BookCopy, както и заглавието и външния ключ в двете колони, ИЛИ трябва да създадете уникален индекс на BookTitle(Title) като отделен индекс.

По-общо, трябва да се уверите, че колоната или колоните, които имате във вашите REFERENCES клауза съвпада точно с уникален индекс в родителската таблица:във вашия случай не успява, защото нямате нито един уникален индекс в Title сам.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Мога ли да използвам ADFS 2.0 за удостоверяване на определени потребители срещу SQL Server?

  2. Използвайте SCOPE_IDENTITY(), за да върнете последно въведената стойност на самоличността в същия обхват (SQL сървър)

  3. Какъв е най-добрият начин за групови вмъквания в база данни от C#?

  4. SQL Server - Връщане на стойност след INSERT

  5. Задайте съпоставяне на база данни в Entity Framework Code-First Initializer