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

Relacje tabel MyISAM Engine (MySQL)

Wypróbuj wyzwalacze:

Przykład MyIsam z kluczem obcym:

Utwórz tabelę nadrzędną:

CREATE TABLE myisam_parent
(
 mparent_id INT NOT NULL,
 PRIMARY KEY (mparent_id)
) ENGINE=MYISAM;

Utwórz tabelę podrzędną:

CREATE TABLE myisam_child
(
 mparent_id INT NOT NULL,
 mchild_id INT NOT NULL,
 PRIMARY KEY (mparent_id, mchild_id)
) ENGINE = MYISAM;

Utwórz wyzwalacz (z DELIMITER):

DELIMITER $$
CREATE TRIGGER insert_myisam_child
BEFORE INSERT ON myisam_child
FOR EACH ROW
BEGIN
    IF (SELECT COUNT(*) FROM myisam_parent WHERE mparent_id=new.mparent_id)=0 THEN
        INSERT error_msg VALUES ('Foreign Key Constraint Violated!');//Custom error
    END IF;
END;$$
DELIMITER ;

Przypadek testowy:

Spróbuj wstawić (utwórz 3 linie w myisam_parent i 6 wierszy w myisam_child ):

INSERT INTO myisam_parent VALUES (1), (2), (3);
INSERT INTO myisam_child VALUES (1,1), (1,2), (2,1), (2,2), (2,3), (3,1);

Spróbuj wstawić:

INSERT INTO myisam_child VALUES (7, 1);

Zwraca ten błąd:

Uwaga:

Ten przykład dotyczy INSERT , dla "wyzwalaczy" z linkiem do odczytu DELETE i UPDATE (na początku pytania)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Powolne podzapytanie w MySQL

  2. MySQL CURRENT_TIMESTAMP podczas tworzenia i aktualizacji

  3. Java, MySQL:Czy istnieje sposób na osadzenie serwera MySQL w programie Java?

  4. Importowanie bazy danych MS ACCESS do mySql?

  5. GRUPA MySQL firmy Regex?