Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie erstelle ich einen Fremdschlüssel für 2 Tabellen?

Sie können eine solche Einschränkung leider nicht erstellen, da der Fremdschlüssel immer auf einer übergeordneten Tabelle basiert.

Was Sie tun können, ist, den Trigger zu erstellen, der Ihre Eingabedaten nach ihrem Typ testet und unangemessene Änderungen rückgängig macht:

Etwa so:

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