Sayangnya, Anda tidak dapat membuat batasan seperti itu, karena kunci asing selalu didasarkan pada satu tabel induk.
Yang dapat Anda lakukan adalah membuat pemicu yang akan menguji data input Anda sesuai dengan jenisnya, dan mengembalikan perubahan yang tidak sesuai:
Sesuatu seperti ini:
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