Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como criar chave estrangeira para 2 tabelas?


Você não pode criar essa restrição, infelizmente, pois a chave foreighn é sempre baseada em uma tabela pai.

O que você pode fazer é criar o gatilho que testará seus dados de entrada de acordo com o tipo e reverter as alterações não apropriadas:

Algo assim:
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