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);
उन अंतिम दो प्रविष्टियों में से पहला काम करता है। दूसरे को एक विदेशी कुंजी बाधा त्रुटि फेंकनी चाहिए।