sql >> Databasteknik >  >> RDS >> Mysql

MyISAM Engine-tabellrelationer (MySQL)

Prova TRIGGER:

Exempel MyIsam med Foreign-Key:

Skapa överordnad tabell:

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

Skapa underordnad tabell:

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

Skapa utlösare (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 ;

Testfall:

Försök infoga (skapa 3 rader i myisam_parent och 6 rader 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);

Testa att infoga:

INSERT INTO myisam_child VALUES (7, 1);

Returnerar detta fel:

Obs:

Det här exemplet är för INSERT , för "triggers" med DELETE och UPDATE läslänk (i början frågan)




  1. Databasautomation bakom Sveriges nya elektroniska identitet Freja eID

  2. mysqldump-problem med återställningsfel:'Vänligen KASSA tabellutrymmet före IMPORT'

  3. beräkna de flesta användare någonsin online med MySQL

  4. hitta det N:e största elementet i SQL