sql >> Database >  >> RDS >> Mysql

MyISAM Engine-tabelrelaties (MySQL)

Probeer TRIGGER's:

Voorbeeld MyIsam met Foreign-Key:

Bovenliggende tabel maken:

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

Maak een onderliggende tabel:

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

Creëer trigger (met 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:

Probeer invoegen (maak 3 regels in myisam_parent en 6 regels 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);

Probeer invoegen:

INSERT INTO myisam_child VALUES (7, 1);

Retourneert deze fout:

Opmerking:

Dit voorbeeld is voor INSERT , voor "triggers" met DELETE en UPDATE lees link (aan het begin de vraag)




  1. SQL Server 2016:altijd versleuteld

  2. Is "Waar IN" met meerdere kolommen gedefinieerd in Standard SQL?

  3. Auto's verhuren is net zo eenvoudig als autorijden:een gegevensmodel voor een autoverhuurbedrijf

  4. Meerdere rijen tellen in MySQL in één query