sql >> データベース >  >> RDS >> Mysql

MyISAMエンジンテーブルリレーション(MySQL)

    トリガーを試す:

    外部キーを使用したMyIsamの例:

    親テーブルを作成する:

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

    子テーブルを作成する:

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

    トリガーの作成(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 ;
    

    テストケース:

    挿入してみてください(myisam_parentに3行作成してください myisam_childの6行 ):

    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);
    

    挿入してみてください:

    INSERT INTO myisam_child VALUES (7, 1);

    このエラーを返します:

    注:

    この例はINSERT用です 、DELETEおよびUPDATE読み取りリンクを使用した「トリガー」の場合(質問の冒頭)




    1. CentOS 7 /RHEL7にMariaDBをインストールする方法

    2. SQL Serverで同等のINSTR()

    3. 複数の名前の1つのレコードを表示するPHPとMYSQL

    4. MySQLのINSERTIGNOREINTOと外部キー