Mysql
 sql >> база данни >  >> RDS >> Mysql

Отношения на таблицата на MyISAM Engine (MySQL)

Опитайте TRIGGERS:

Пример 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 ;

Тестов случай:

Опитайте с вмъкване (създайте 3 реда в myisam_parent и 6 реда в 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);

Опитайте да вмъкнете:

INSERT INTO myisam_child VALUES (7, 1);

Връща тази грешка:

Забележка:

Този пример е за INSERT , за "задействания" с DELETE и UPDATE четене на връзката (в началото на въпроса)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да импортирате ГОЛЕМИ sql файлове в mysql таблица

  2. Има ли значение ограничението за размера на VARCHAR?

  3. Как да използвате OR &AND в клаузата WHERE в mysql

  4. MySQL - Контролирайте кой ред се връща от група от

  5. PHP MYSQL - Вмъкване в без използване на имена на колони, но с поле за автоматично нарастване