插入触发器在插入发生从节点js应用程序不起作用后

我有一个后插入触发器。 调用一个存储的过程。当我运行一个直接查询它运作良好。 但是当我通过节点js应用程序插入数据。 它甚至不在主表中插入数据。 触发器和存储过程中没有任何错误,因为它与表的直接插入查询一起工作。

dbObject.create(data, function(err, response){ if (err) { //console.log("err", err); res.status(500).jsonp(response) } console.log("response", response); dbObject.find({SnsId: SnsId}, '*' , {}, 0, 0, {}, function(err, resp){ if (err) { //console.log("err", err); res.status(500).jsonp(err) } console.log("response", resp); res.jsonp(resp); }); }); 

触发代码 –

 DELIMITER $$ CREATE TRIGGER `copytoSensorMapTrigger` AFTER INSERT ON test4.`SENSORS` FOR EACH ROW BEGIN CALL copyToSensorMap(NEW.`SnsId`,NEW.`SnsState`); END; 

存储过程代码 –

 DELIMITER $$ CREATE PROCEDURE copyToSensorMap(IN snsid bigint(20),IN sns_state varchar(128)) BEGIN DECLARE color varchar(128); INSERT INTO test3.`SENSOR_MAP` (`SENSOR_ID`, `SENSOR_NAME`, `USER_ID`, `HOST_ID`, `SENSOR_STATE`) SELECT `SnsId`, `SnsName`,`SnsOwner`,`HostId`,`SnsState` FROM test4.`SENSORS` where test4.`SENSORS`.`SnsId`=snsid; IF ( sns_state ='Unassigned') THEN set color = 'Grey'; ELSEIF ( sns_state ='Running') THEN set color = 'Green'; END IF; update test3.`SENSOR_MAP` set test3.`SENSOR_MAP`.`SENSOR_COLOR` = color where test3.`SENSOR_MAP`.`SENSOR_ID` = snsid; UPDATE test3.`SENSOR_MAP` INNER JOIN test4.`HOSTS` ON (test3.`SENSOR_MAP`.`HOST_ID` = test4.`HOSTS`.id) SET test3.`SENSOR_MAP`.HOST_NAME = test4.HOSTS.Name, test3.`SENSOR_MAP`.LATITUDE = test4.HOSTS.GpsLatitude, test3.`SENSOR_MAP`.LONGITUDE = test4.HOSTS.GpsLongitude; UPDATE test3.`SENSOR_MAP` INNER JOIN test4.`users` ON (test3.`SENSOR_MAP`.`USER_ID` = test4.`users`.id) SET test3.`SENSOR_MAP`.USER_NAME = test4.users.user; UPDATE test3.`SENSOR_MAP` c INNER JOIN ( select a.`SnsId`,b.id,b.ServiceName,b.ServiceType from test4.sensors as a join test4.SESSIONS as b on a.SessionId =b.id where a.`SnsId` =snsid group by `SnsId` ) d ON c.SENSOR_ID = d.`SnsId` SET c.SESSION_NAME = d.ServiceName, c.SESSION_TYPE = d.ServiceType; END $$ 

我使用Mysql数据库和存储引擎是InnoDB。 我已经检查了SQL查询。 它正在与SET关键字形成。 插入存储过程后,Mysql是否使用set关键字支持插入查询?

问题现在解决了。 它是Mysql中所有大写字母的表名,而且我用小写字母表写的名字是“user”和“sensor”。 现在解决了。

我也build议在检查错误的地方使用return ,否则代码将继续,不会在错误的情况下停止。

尝试使用此代码:

 dbObject.create(data, function(err, response){ if (err) { //console.log("err", err); return res.status(500).jsonp(response) } console.log("response", response); dbObject.find({SnsId: SnsId}, '*' , {}, 0, 0, {}, function(err, resp){ if (err) { //console.log("err", err); return res.status(500).jsonp(err) } console.log("response", resp); res.jsonp(resp); }); });