मेरे पास एक सम्मिलित ट्रिगर है। जो संग्रहीत प्रक्रिया को कॉल करता है। जब मैं सीधी क्वेरी चलाता हूं तो यह अच्छी तरह से काम करता है। लेकिन जब मैं नोड जेएस ऐप के माध्यम से डेटा डालता हूं। यह मुख्य तालिका में डेटा भी सम्मिलित नहीं करता है। ट्रिगर और संग्रहीत प्रक्रिया में कोई त्रुटि नहीं है क्योंकि यह तालिका के लिए सीधे सम्मिलित क्वेरी के साथ काम करता है।डालने के बाद ट्रिगर काम नहीं करता है जब नोड जेएस ऐप से होता है
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 है। मैंने एसक्यूएल क्वेरी की जांच की है। यह एसईटी कीवर्ड के साथ बना रहा है। संग्रहीत प्रक्रिया को सम्मिलित करने के बाद सेट कीवर्ड समर्थन के साथ MySQL प्रविष्टि क्वेरी करता है।
समस्या हल हो गई है। यह माइस्क्ल में सभी कैप्स में एक टेबल नाम था और मैंने लोअरकेस में लिखा था। टेबल्स नाम "उपयोगकर्ता" और "सेंसर" थे। अब यह हल हो गया है।
ज्यादा नहीं है कि कोड के उस टुकड़े से अनुमान लगाया जा सकता है, एक [mcve] (http://stackoverflow.com/help/mcve) पोस्ट करने के लिए प्रयास करें। – cviejo
जब आप 'dbObject.create (...) 'को कॉल करते समय उपयोग की जाने वाली वास्तविक SQL क्वेरी को लॉगिंग करने का प्रयास कर सकते हैं और यह देखने के लिए कि आप कोई विसंगति – mzulch
" है, तो यह मुख्य तालिका में डेटा भी सम्मिलित नहीं करता है "- इसका मतलब है कि समस्या आपके node.js डेटाबेस सम्मिलन में है। आपके द्वारा साझा किए गए कोड स्निपेट के साथ समस्या की पहचान करना संभव नहीं है। कृपया निर्दिष्ट करें कि आप किस डीबी का उपयोग कर रहे हैं और इसके अनुरूप अधिक कोड स्निपेट निर्दिष्ट करें। – Damodaran