ट्रिगर आज़माएं:
- MySQL में प्रोग्रामेटिक रूप से विदेशी कुंजियों को लागू करना ए>
- कैस्केडिंग ऑपरेशंस का अनुकरण करना InnoDB से MyISAM टेबल्स तक
विदेशी कुंजी के साथ 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 रीड लिंक के साथ "ट्रिगर" के लिए (शुरुआत में प्रश्न)