Mysql
 sql >> Base de données >  >> RDS >> Mysql

Relations de table du moteur MyISAM (MySQL)

Essayez les TRIGGER :

Exemple MyIsam avec clé étrangère :

Créer une table parent :

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

Créer une table enfant :

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

Créer un déclencheur (avec 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 ;

Cas de test :

Essayez d'insérer (créez 3 lignes dans myisam_parent et 6 lignes dans 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);

Essayez d'insérer :

INSERT INTO myisam_child VALUES (7, 1);

Renvoie cette erreur :

Remarque :

Cet exemple est pour INSERT , pour les "triggers" avec DELETE et UPDATE lire le lien (au début la question)