sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo crear una clave externa para 2 tablas?

Desafortunadamente, no puede crear tal restricción, ya que la clave externa siempre se basa en una tabla principal.

Lo que puede hacer es crear el activador que probará sus datos de entrada según su tipo y revertirá los cambios inadecuados:

Algo como esto:

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