我有两个查询 - 两者都在 phpMyAdmin 中工作,但是当被触发器调用时,一个不会工作(底部的)
INSERT INTO stats_objects(idCatalogue,strAttrName,strAttrVal)
SELECT CatId,'strName',l.strName FROM Catalogue c
INNER JOIN item_live l ON c.idItem=l.id WHERE c.id=CatId; OK
INSERT INTO stats_objects(idCatalogue,strAttrName,strAttrVal)
SELECT CatId,'strOS',h.strOS FROM Catalogue c
INNER JOIN hosting_live h ON h.idItem=c.idItem WHERE c.id=CatId; BROKEN
表结构在hosting_live 中的数据与h.idItem=l.id 上的item_live 一对一,并且item live 与c.idItem=l.id 上的catalog 中的每个唯一条目一对一。
我是再次盯着明显的流血,还是我缺少的 MySQL 触发器和程序有微妙之处。这两者都在由同一个触发器调用的同一过程中,一个接一个。没有临时表 - 我看不到任何提交,没有动态 SQL。触发器在目录上,但我看不到我正在更改目录。
有人比我有更好的眼睛和更新鲜的头脑吗?
编辑:按要求触发代码
CREATE TRIGGER aiCatalogue AFTER INSERT ON catalogue FOR EACH ROW
BEGIN
/* do other stuff with unrelated tables */
CALL StatsObjectInsert(NEW.id);
END$$
剥去所有叫的肉时非常基本
CREATE PROCEDURE StatsObjectInsert(IN CatId int(10))
BEGIN
/* the procedure containing the above */
END$$