2012-09-18 34 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$$ 

dấu tách;không được phép trả lại kết quả từ trình kích hoạt mysql

+2

mẹo người dùng mới: vui lòng, mọi người, HỎI câu hỏi, không rõ ràng những gì bạn đang yêu cầu. Bao gồm phiên bản bạn sử dụng và có thể là thông báo lỗi :) –

Trả lời

20

Bạn không thể thực hiện lệnh SELECT từ trình kích hoạt. Nếu bạn muốn đặt biến, hãy sử dụng câu lệnh SELECT INTO, ví dụ: -

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 
... 

Ngoài ra, đổi tên biến, chúng phải khác với tên trường.

+0

cảm ơn bạn.it hoạt động – Tarika

+0

Chấp nhận câu trả lời nếu nó là OK. – Devart

Các vấn đề liên quan