Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment créer une clé étrangère pour 2 tables ?

Vous ne pouvez malheureusement pas créer une telle contrainte, car la clé étrangère est toujours basée sur une table parent.

Ce que vous pouvez faire est de créer le déclencheur qui testera vos données d'entrée en fonction de leur type et annulera les modifications inappropriées :

Quelque chose comme ça :

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