Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Mối quan hệ bảng MyISAM Engine (MySQL)

Hãy thử TRIGGERs:

Ví dụ MyIsam với Khoá ngoại:

Tạo bảng cha:

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

Tạo bảng con:

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

Tạo trình kích hoạt (với 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 ;

Trường hợp thử nghiệm:

Thử chèn (tạo 3 dòng trong myisam_parent và 6 dòng trong 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);

Thử chèn:

INSERT INTO myisam_child VALUES (7, 1);

Trả về lỗi này:

Lưu ý:

Ví dụ này dành cho INSERT , cho "trình kích hoạt" với liên kết đọc XÓA và CẬP NHẬT (ở đầu câu hỏi)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trình tạo truy vấn Laravel cho kết quả đệ quy? Ví dụ. id, parent_id

  2. Cách tham gia hai bảng trong MySQL

  3. Tìm nạp tất cả các hàng dựa trên truy vấn vào một mảng

  4. chèn autoincrement vào cột thứ hai

  5. Bất kỳ lý do nào để vẫn sử dụng trường hợp rắn cho các bảng và cột cơ sở dữ liệu?