2017-11-16 14 views
0

私のテーブルには5カラムがあります:ID、ピース、チューブ、バリデーション、インデックス1 バリデーションカラムを更新すると、同じチューブとピースを持っている次のインデックス1のカラムをインクリメントしたい私のテーブルの上に2の旧行のCOLUMN)をVALIDATE(私は)トリガーなしで行うことができれば、私は知らないexempleためインクリメントトリガ更新mysql

は、これが私のテーブルです:。

id/piece/tube/validate/index1 
__________________________________________________________________ 
1/1000//011 /1 /1 
2/1000//011 /0 /2 
3/1000//011 /0 /3 
4/1000//011 /0 /4 

私の機能は、「検証」を更新id = 1の行の列 実際の行の検証+ 1 = 2 - >次の行の検証+1

id/piece/tube/validate/index1 
__________________________________________________________________ 
1/1000//011 /2 /1 
2/1000//011 /1 /2 
3/1000//011 /0 /3 
4/1000//011 /0 /4 

私はそのトリガーやった:

Create Trigger operationUp after update on operation 
for each Row 
begin 
    if validate =2 
     select new.index1+1 
     from operation 
     where piece=new.piece 
     and tube=new.tube; 

     Update operation set validate=validate+1 
    end if; 
end; 

をしかし、ストアドファンクションやトリガ内で

+0

「しかし動作しませんでした」は問題の説明ではありません。なぜそれは動作しませんでしたか?間違いましたか?もしそうなら、エラーメッセージは何でしたか?私たちに推測させないでください! – HoneyBadger

+0

sry、構文エラーです。「#1064-あなたのSQL構文にエラーがあります。 –

+0

意味があります。二重の 'select'と' update'を伴わない明白な 'update'ステートメント( 'Updateoperation')があります。 – HoneyBadger

答えて

0

と同様にを動作しませんでした、すでに使用されているテーブルを変更することが許可されていません関数またはトリガーを呼び出したステートメントによって(読み取りまたは書き込みのために)構文エラーがあります.1)必要な場合は、2)すべてのSQLステートメントを終了する必要があります。 (あなたは更新ステートメントの後ろに1つがありません)3)トリガーで結果セットを返すことはできません(1つの値しか返されないことがわかっていても選択できません)。