2012-09-18 14 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

OKの場合は答えを受け入れます。 – Devart