Dies ist meine mysql Trigger AnweisungMysql Fehler für die Verwendung von Trennzeichen in Trigger
DELIMITER |
CREATE TRIGGER kk AFTER UPDATE
ON location FOR EACH ROW
BEGIN
IF NEW.name not in(SELECT A.name FROM filter A WHERE (NEW.name = A.name))THEN
IF NEW.location_name != OLD.location_name THEN
INSERT INTO filter(old_location_name,new_location_name)
VALUES (OLD.location_name, NEW.location_name);
ELSE
UPDATE filter SET old_location_name = OLD.location_name , new_location_name = NEW.location_name WHERE name = OLD.name;
END IF;
ELSE
UPDATE filter SET old_location_name = OLD.location_name , new_location_name = NEW.location_name WHERE name = OLD.name;
END IF;
END;|
DELIMITER ;
Dies funktioniert gut, wenn ich diesen Code in phpMyadmin einfügen.
Und in meinem Projekt
$sqlDrop = "DROP TRIGGER IF EXISTS `kk`";
$resDrop = parent::_executeQuery($sqlDrop);
echo $sql = "same above delimiter trigger query";
$rs = parent::_executeQuery($sql);
Nun ist die $sql
Anweisung echos in einer einzigen Zeile
DELIMITER | CREATE TRIGGER kk AFTER UPDATE ON location FOR EACH ROW BEGIN IF NEW.name not in(SELECT A.name FROM filter A WHERE (NEW.name = A.name))THEN IF NEW.location_name != OLD.location_name THEN INSERT INTO filter(old_location_name,new_location_name,name) VALUES (OLD.location_name, NEW.location_name); ELSE UPDATE filter SET old_location_name = OLD.location_name , new_location_name = NEW.location_name WHERE name = OLD.name; END IF; ELSE UPDATE filter SET old_location_name = OLD.location_name , new_location_name = NEW.location_name WHERE name = OLD.name; END IF; END;| DELIMITER ;
und die Abfrage wird nicht ausgeführt. Und wenn ich die Echo-Anweisung in meinem phpMyadmin einfügen, zeigen sein mir einen Fehler
Also, was das Problem sein könnte. Ist es die richtige Art Trigger-Anfragen auszuführen?
Danke das hat gut funktioniert ... Prost – Matarishvan