sql >> Databáze >  >> RDS >> Mysql

odkaz na cizí klíč mysql ze složeného klíče

MySQL má spoustu omezení cizích klíčů . Mezi ty, které by vám mohly stát v cestě. . .

  • Obě tabulky musí používat modul INNODB.
  • "V referenční tabulce musí být index, kde jsou sloupce cizího klíče uvedeny jako první sloupce ve stejném pořadí."

Tento kód funguje v mé verzi (5.1.62).

create table DEP_FACULTY(
  LNAME varchar(50),
  FNAME varchar(50),
  EMAIL varchar(70) primary key
) ENGINE = INNODB;

insert into DEP_FACULTY values ('Gregor', 'Brandich', '[email protected]');

create table STUDENT(
  LNAME varchar(50),
  FNAME varchar(50),
  ID char(9) primary key,
  ASSIGNED_ADVISOR_EMAIL varchar(70),
  foreign key (ASSIGNED_ADVISOR_EMAIL) references DEP_FACULTY(EMAIL) ON DELETE SET NULL,
  IS_ADVISED tinyint(1)
) ENGINE = INNODB;

insert into STUDENT values ('Charmaine', 'DePeletier', 'cmd', '[email protected]', 1);

create table ADVISE_HIST(
  STUDENT_ID char(9),
  foreign key (STUDENT_ID) references STUDENT(ID),
  ACTUAL_ADVISOR_EMAIL char(70) NOT NULL,
  foreign key (ACTUAL_ADVISOR_EMAIL) references DEP_FACULTY(EMAIL),
  DATE_ADVISED date,
  primary key REF_ADVISE_HIST (STUDENT_ID, DATE_ADVISED)
) ENGINE = INNODB;

insert into ADVISE_HIST values ('cmd', '[email protected]', CURRENT_DATE);
insert into ADVISE_HIST values ('ctd', '[email protected]', CURRENT_DATE);

Z těch posledních dvou vložek funguje první. Druhý by měl vyvolat chybu omezení cizího klíče.




  1. pyodbc:Jak se znovu pokusit o zotavení z přechodných chyb?

  2. Jak obnovím soubor výpisu z mysqldump?

  3. Lokálně vyvíjejte React w/ full-stack (WAMP).

  4. Vyberte nejběžnější hodnotu z pole v MySQL