插入后触发器在从节点JS应用程序插入时不起作用
after insert trigger does not work when insert happens from node js app
我有一个插入后的触发器。 调用存储过程 .当我运行直接查询时,它运行良好。 但是当我通过节点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 是否使用设置关键字支持插入查询。
问题现已解决。 它是Mysql中所有大写的表名,我用小写写的表名是"user"和"sensor"。 现在解决了。
我还建议在检查错误的地方使用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);
});
});
相关文章:
- 谷歌应用程序脚本:如何修复循环将一个谷歌文档的段落插入另一个
- 将数据插入数据库express/mongodb应用程序时出错
- 如何在node.js应用程序中的mongodb中按层次结构顺序插入数据
- Ember.js将视图插入应用程序控制器,但使用另一个控制器进行操作
- 允许用户将自己的 JavaScript 插入我们的 Web 应用程序会产生哪些安全后果?
- 在应用程序启动时生成路由 URL 列表,并插入到 MVC 中的 javascript 文件中
- 插入后触发器在从节点JS应用程序插入时不起作用
- 当新行从应用程序插入到mysql表时,监听来自节点服务器js的事件
- 使用谷歌应用程序脚本插入括号和引号
- IndexedDB和Angular应用程序上的大量插入
- SQLite web应用程序,从插入获取行
- HTML5 -开发可插入的应用程序
- 如何在Rails 3应用程序中插入CKEditor插件
- 数据没有通过Phonegap应用程序插入MySql远程数据库
- SAPUI5深度插入来自OData V2模型上Kapsel离线应用程序
- 动态插入脚本在谷歌应用程序脚本web应用程序
- 在rails应用程序中用文本框向数据表中插入行
- 如何保护允许用户插入JavaScript的应用程序
- 插入嵌入式文件mongodb从快递应用程序
- 我如何将javascript源文件插入我的金字塔python应用程序并在我的模板中使用它们