mysql - 错误: No unique index found for the referenced field of the primary table

标签 mysql sql database ms-access

我正在尝试使用 AnySQL Maestro 脚本创建数据库。我有以下代码:

create table KLANT
(
   Klantnr integer,
   Naam varchar(255),
   Adres varchar(255),
   Plaats varchar(255),

   constraint pk_klant
   primary key (Klantnr)
); -- go


create table MEDEWERKER
(
   Mdwnr integer,
   Naam varchar(255),
   Telnr integer,
   Afdnr integer,

   constraint pk_medewerker
   primary key (Mdwnr)       
); -- go

create table AFDELING
(
   Afdnr integer,
   Afdnaam varchar(255),
   Mdwnr integer,

   constraint pk_afdeling
   primary key (Afdnr)
); -- go

alter table MEDEWERKER
add constraint fk_medewerker_afdeling foreign key(Afdnr) references Afdeling(Afdnr);

alter table AFDELING
add constraint fk_afdeling_medewerker foreign key(Mdwnr) references Medewerker(Mdwnr);


create table TAAK
(
   Taaknr integer,
   ProjID integer,
   Urenomvang integer,

   constraint pk_taak
   primary key (Taaknr, ProjID)
); -- go

create table Project
(
   ProjID integer,
   ProjNaam varchar(255),
   Startdatum varchar(255),
   Sluitdatum varchar(255),
   Klantnr integer,
   Mdwnr integer,
   ParentProjid integer,

   constraint pk_project
   primary key (ProjID),

   constraint fk_project_klantnr
   foreign key(Klantnr) references klant(Klantnr),

   constraint fk_project_medewerker
   foreign key(Mdwnr) references medewerker(Mdwnr)
); -- go

alter table TAAK
    add constraint fk_taak_project foreign key(ProjID) references    Project(ProjID);

create table Assignment
(
   Mdwnr integer,
   ProjID integer,
   Taaknr integer,
   Weeknr integer,
   AantalUren integer,

   constraint pk_assignment
   primary key (Mdwnr, ProjID, Taaknr, Weeknr),

   constraint fk_assignment_medewerker
   foreign key(Mdwnr) references medewerker(Mdwnr),

   constraint fk_assignment_project
   foreign key(ProjID) references Project(ProjID),

   constraint fk_assignment_taak
   foreign key(Taaknr) references Taak(Taaknr)       
); -- go

不幸的是,最后一个表分配给出了以下错误消息:

未找到主表引用字段的唯一索引

有人可以帮助我吗?我被困住了

最佳答案

Taak 上的主键由两列组成:

 constraint pk_taak primary key (Taaknr, ProjID)

您的约束仅引用其中之一。

您还需要ProjID:

约束fk_assignment_taak 外键(Taaknr,ProjID)引用Taak(Taaknr,ProjID)

关于mysql - 错误: No unique index found for the referenced field of the primary table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35867842/

相关文章:

sql - 在一个脚本中创建 SQL Server 表和存储过程?

php - 如何按每个主题显示我的数据库文件

mysql - nodejs mysql 不能与 mariadb 一起工作

sql - 错误 : operator does not exist: integer = integer[]

sql - 用于添加多列的 DB2 alter table 语句如何工作?

mysql - 是否可以使用与数据库无关的 SQL 查询来获取前 N 行?

javascript - twitter 中 Sequelize 中的多对多 self 引用,如 web-app

java - 使用巨大的 ArrayLists,Java OutOfMemoryError : Java heap space. .. 使用 db?

mysql - 将表的键字段从一个数据库同步到另一个数据库

mysql - 如何使这个 MYSQL 外连接工作