sql >> Base de Datos >  >> RDS >> Mysql

Relaciones de tablas del motor MyISAM (MySQL)

Pruebe los DISPARADORES:

Ejemplo MyIsam con clave externa:

Crear tabla principal:

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

Crear tabla secundaria:

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

Crear activador (con DELIMITADOR):

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 ;

Caso de prueba:

Intente insertar (cree 3 líneas en myisam_parent y 6 líneas en 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);

Intenta insertar:

INSERT INTO myisam_child VALUES (7, 1);

Devuelve este error:

Nota:

Este ejemplo es para INSERT , para "disparadores" con ELIMINAR y ACTUALIZAR enlace de lectura (al principio de la pregunta)