sql >> Database teknologi >  >> RDS >> Mysql

MyISAM Engine-tabelrelationer (MySQL)

Prøv TRIGGERs:

Eksempel MyIsam med Foreign-Key:

Opret overordnet tabel:

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

Opret underordnet tabel:

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

Opret trigger (med 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 ;

Testcase:

Prøv at indsætte (opret 3 linjer i myisam_parent og 6 linjer i 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);

Prøv at indsætte:

INSERT INTO myisam_child VALUES (7, 1);

Returnerer denne fejl:

Bemærk:

Dette eksempel er for INSERT , for "triggere" med DELETE og UPDATE read link (i begyndelsen spørgsmålet)




  1. Hvordan ved du, hvad et godt indeks er?

  2. Række til kolonne transformation i MySQL

  3. mysql er død, men subsys låst

  4. Sådan finder du mysql-datamappen fra kommandolinjen i Windows