Als Reaktion auf @Zxaos Anfrage, da wir nicht AND/OR-Operatoren für MySQL-Trigger haben können, beginnend mit Code, unten ist ein vollständiges Beispiel, um das gleiche zu erreichen.
1. INSERT Trigger definieren:
DELIMITER //
DROP TRIGGER IF EXISTS my_insert_trigger//
CREATE [email protected] 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. die UPDATE-Trigger definieren
DELIMITER //
DROP TRIGGER IF EXISTS my_update_trigger//
CREATE [email protected] 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 ;
von beiden dieser Trigger 3. Das einheitliche Verfahren verwendet definieren:
DELIMITER //
DROP PROCEDURE IF EXISTS procedure_to_run_processes_due_to_changes_on_table//
CREATE [email protected] 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 ;
Sie beachten, dass ich darauf achten, das Trennzeichen wiederherzustellen, wenn ich mit meinem Geschäft fertig bin, das die Auslöser und die Prozedur definiert.
das ist eine gute Idee. Hatte nicht gedacht, auch eine Prozedur zu verwenden. –
Können Sie uns ein Beispiel für diejenigen geben, die mit der Syntax nicht vertraut sind? – Zxaos
@Zxaos: Ich würde vorschlagen, mit http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html (die einige Beispiele enthält) zu beginnen und bei Bedarf eigene Fragen zu stellen. – derobert