sql >> Databáze >  >> RDS >> Mysql

Vztahy mezi tabulkami MyISAM Engine (MySQL)

Zkuste TRIGGERs:

Příklad MyIsam s cizím klíčem:

Vytvořit nadřazenou tabulku:

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

Vytvořit podřízenou tabulku:

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

Vytvořit spouštěč (pomocí 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 ;

Testovací případ:

Zkuste vložit (vytvořte 3 řádky v myisam_parent a 6 řádků v 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);

Zkuste vložit:

INSERT INTO myisam_child VALUES (7, 1);

Vrací tuto chybu:

Poznámka:

Tento příklad je pro INSERT , pro "spouštěče" s DELETE a UPDATE čtěte odkaz (na začátku otázka)




  1. Počítejte výskyty na základě několika podmínek pro dvě tabulky

  2. Jak otevřít databázi v exkluzivním režimu v Accessu 2016

  3. Použití DBCC CLONEDATABASE a Query Store pro testování

  4. Lehká instalace WordPress:Jak nainstalovat WordPress s SQLite