Mysql
 sql >> Database >  >> RDS >> Mysql

Come creare una chiave esterna per 2 tabelle?

Non è possibile creare tale vincolo, sfortunatamente, poiché la chiave foreighn è sempre basata su una tabella padre.

Quello che puoi fare è creare il trigger che verificherà i tuoi dati di input in base al tipo e annullerà le modifiche non appropriate:

Qualcosa del genere:

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