2012-09-18 25 views
6
delimiter $$ 
CREATE TRIGGER REDUCE_NOTE_COUNT 
AFTER DELETE ON iv_notes 
FOR EACH ROW BEGIN 
DECLARE supplierid int(11); 
DECLARE customerid int(11); 

SELECT supplierid ,customerid FROM iv_documents WHERE id=OLD.note_documentid; 
SET supplierid=supplierid; 
SET customerid=customerid; 

IF supplierid=OLD.note_companyid THEN 
    update iv_documents 
      set supplier_notes=supplier_notes-1 
      where id=OLD.note_documentid and supplier_notes>0; 
END IF; 
IF customerid=OLD.note_companyid THEN 
    update iv_documents set customer_notes=customer_notes-1 
      where id=OLD.note_documentid 
      and customer_notes>0 ; 
END IF; 
END$$ 

डिलीमीटर से परिणामसेट वापस करने की अनुमति नहीं है;को एक ट्रिगर mysql

+2

नया उपयोगकर्ता टिप: कृपया, लोग, सवाल पूछें, यह स्पष्ट नहीं है कि आप क्या पूछ रहे हैं। आपके द्वारा उपयोग किए जाने वाले संस्करण को शामिल करें, और संभवतः एक त्रुटि संदेश :) –

उत्तर

20

आप ट्रिगर से SELECT कथन निष्पादित नहीं कर सकते हैं। यदि आप चर सेट करना चाहते हैं, तो SELECT INTO कथन का उपयोग करें, उदा। -

DECLARE supplierid_ INT(11); 
DECLARE customerid_ INT(11); 

SELECT 
    supplierid, customerid 
INTO 
    supplierid_, customerid_ 
FROM 
    iv_documents 
WHERE 
    id = OLD.note_documentid; 

IF supplierid_ = OLD.note_companyid THEN 
... 

इसके अलावा, चर नाम बदलें, उन्हें फ़ील्ड नामों से अलग होना होगा।

+0

धन्यवाद। यह काम करता है – Tarika

+0

अगर यह ठीक है तो उत्तर स्वीकार करें। – Devart

संबंधित मुद्दे