दुर्भाग्य से, आप इस तरह की बाधा नहीं बना सकते, क्योंकि फ़ोरेन कुंजी हमेशा एक पैरेंट टेबल पर आधारित होती है।
आप क्या कर सकते हैं ट्रिगर बनाने के लिए जो आपके इनपुट डेटा को इसके प्रकार के अनुसार परीक्षण करेगा, और रोलबैक अनुचित परिवर्तन:
कुछ इस तरह:
CREATE TRIGGER insert_stock_child
BEFORE INSERT
ON stock
FOR EACH ROW
BEGIN
IF new.type = 'BOOK_TYPE' AND (SELECT COUNT(*) FROM book
WHERE book.bookID = new.itemID)= 0
THEN
INSERT error_msg VALUES ('No such book!');
END IF;
END;
-- same logic for the cd table