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

препратка към външен ключ на mysql от съставен ключ

MySQL има много ограничения за чужди ключове . Сред тези, които може да ви пречат. . .

  • И двете таблици трябва да използват машината INNODB.
  • „В референтната таблица трябва да има индекс, в който колоните с външен ключ са изброени като първите колони в същия ред.“

Този код работи в моята версия (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);

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Има ли таблица за присъединяване (таблица за асоцииране) първичен ключ? много към много отношения

  2. Извличане на MySQL данни с помощта на клаузи where

  3. Вземете всички обекти без цикъл в OOP MySQLi

  4. Първи стъпки с GearHost за разработка на база данни на MySQL

  5. Как да получите данни за последния месец в MySQL