@Zxaos अनुरोध के जवाब में, क्योंकि हमारे पास MySQL ट्रिगर्स के लिए AND / OR ऑपरेटर नहीं हो सकते हैं, जो आपके कोड से शुरू होता है, नीचे उसी को प्राप्त करने के लिए एक पूर्ण उदाहरण है।
1. INSERT ट्रिगर को परिभाषित करें:
DELIMITER //
DROP TRIGGER IF EXISTS my_insert_trigger//
CREATE DEFINER=root@localhost TRIGGER my_insert_trigger
AFTER INSERT ON `table`
FOR EACH ROW
BEGIN
-- Call the common procedure ran if there is an INSERT or UPDATE on `table`
-- NEW.id is an example parameter passed to the procedure but is not required
-- if you do not need to pass anything to your procedure.
CALL procedure_to_run_processes_due_to_changes_on_table(NEW.id);
END//
DELIMITER ;
2. अद्यतन ट्रिगर को परिभाषित करें
DELIMITER //
DROP TRIGGER IF EXISTS my_update_trigger//
CREATE DEFINER=root@localhost TRIGGER my_update_trigger
AFTER UPDATE ON `table`
FOR EACH ROW
BEGIN
-- Call the common procedure ran if there is an INSERT or UPDATE on `table`
CALL procedure_to_run_processes_due_to_changes_on_table(NEW.id);
END//
DELIMITER ;
3. इन दोनों ट्रिगर्स द्वारा उपयोग किए जाने वाले सामान्य प्रक्रिया को परिभाषित करें:
DELIMITER //
DROP PROCEDURE IF EXISTS procedure_to_run_processes_due_to_changes_on_table//
CREATE DEFINER=root@localhost PROCEDURE procedure_to_run_processes_due_to_changes_on_table(IN table_row_id VARCHAR(255))
READS SQL DATA
BEGIN
-- Write your MySQL code to perform when a `table` row is inserted or updated here
END//
DELIMITER ;
आप ध्यान दें कि जब मैं अपने व्यवसाय को ट्रिगर और प्रक्रिया को परिभाषित करने के साथ किया जाता हूं, तो मैं सीमांकक को पुनर्स्थापित करने का ध्यान रखता हूं।