Ошибка MySQL 1215 - внешний ключ (тип даты) к первичному ключу (тип даты) - PullRequest
1 голос
/ 11 марта 2019

Я пытаюсь сослаться на PostDate из речи в PostDate от P_ASSIGNMENT, но это дает мне "Error 1215: Cannot add foreign key constraint".В настоящее время я работаю над InnoDB на MySQL Workbench.

Вот мой код SQL:

CREATE TABLE P_ASSIGNMENT
(StaffID int not null,
 JobID int not null,
 PostDate date not null,
 EndDate date,
 CONSTRAINT P_Assignment_pk PRIMARY KEY (StaffID, JobID, PostDate),
);

CREATE TABLE SPEECH
 (EventName varchar(100) not null,
  EventDate date not null,
  OrderNum int not null,
  ContentAbst varchar(250),
  Contact int not null,
  Presenter int not null,
  JobID int not null,
  PostDate date not null,
 CONSTRAINT Speech_pk PRIMARY KEY (EventName, EventDate, OrderNum),
 CONSTRAINT Speech_fk3 FOREIGN KEY (Presenter) REFERENCES P_ASSIGNMENT (StaffID),
 CONSTRAINT Speech_fk4 FOREIGN KEY (JobID) REFERENCES P_ASSIGNMENT (JobID),
 CONSTRAINT Speech_fk5 FOREIGN KEY (PostDate) REFERENCES P_ASSIGNMENT(PostDate)
);

1 Ответ

0 голосов
/ 11 марта 2019

Это одиночный составной внешний ключ. Синтаксис:

CREATE TABLE SPEECH
 (EventName varchar(100) not null,
  EventDate date not null,
  OrderNum int not null,
  ContentAbst varchar(250),
  Contact int not null,
  Presenter int not null,
  JobID int not null,
  PostDate date not null,
 CONSTRAINT Speech_pk PRIMARY KEY (EventName, EventDate, OrderNum),
 CONSTRAINT Speech_fk3 FOREIGN KEY (Presenter, JobID, PostDate) -- fix here
   REFERENCES P_ASSIGNMENT (StaffID, JobID, PostDate)
);

Просто чтобы прояснить ситуацию, у вас нет трех внешних ключей. У вас есть один внешний ключ. Этот внешний ключ является составным ключом, поскольку он содержит три столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...