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

MyISAM Engine-Tabellenbeziehungen (MySQL)

Versuchen Sie es mit TRIGGERs:

Beispiel MyIsam mit Foreign-Key:

Übergeordnete Tabelle erstellen:

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

Untergeordnete Tabelle erstellen:

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

Trigger erstellen (mit 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 ;

Testfall:

Versuchen Sie einfügen (erstellen Sie 3 Zeilen in myisam_parent und 6 Zeilen in 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);

Versuchen Sie einfügen:

INSERT INTO myisam_child VALUES (7, 1);

Gibt diesen Fehler zurück:

Hinweis:

Dieses Beispiel gilt für INSERT , für "Trigger" mit DELETE und UPDATE Link lesen (am Anfang die Frage)