За съжаление не можете да създадете такова ограничение, тъй като външният ключ винаги се базира на една родителска таблица.
Това, което можете да направите, е да създадете тригер, който ще тества вашите входни данни според техния тип и ще отмени неподходящи промени:
Нещо подобно:
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