Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak stworzyć klucz obcy dla 2 tabel?

Nie możesz niestety stworzyć takiego ograniczenia, ponieważ klucz foreigh zawsze bazuje na jednej tabeli nadrzędnej.

To, co możesz zrobić, to utworzyć wyzwalacz, który przetestuje dane wejściowe zgodnie z ich typem i cofnie nieodpowiednie zmiany:

Coś takiego:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sortowanie tabeli tagów MYSQL

  2. Mysql przekroczył błąd max_user_connections na stronie c#

  3. Ostrzeżenie:Nieprawidłowy argument podany dla foreach() w

  4. Przechowywanie numerów ubezpieczenia społecznego

  5. Jak mogę zmienić prefiksy we wszystkich tabelach w mojej bazie danych MySQL?