sql >> Database >  >> RDS >> Mysql

Hoe maak je een externe sleutel voor 2 tabellen?

U kunt helaas niet zo'n beperking maken, omdat de foreighn-sleutel altijd is gebaseerd op één bovenliggende tabel.

Wat u kunt doen, is de trigger maken die uw invoergegevens test op basis van het type, en ongepaste wijzigingen ongedaan maken:

Zoiets als dit:

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



  1. Hoe kan ik bepaalde delen van de tabel uit mijn database niet weergeven?

  2. SELECT min en max waarde uit een deel van een tabel in MySQL

  3. Een kolom bijwerken op basis van een filter van een andere kolom

  4. Debuggen van MySQL-triggers