2016-08-05 16 views
0

1つのテーブルに1つの3つの列を連結するトリガーのペアがあります。私は別の列に異なる書式で同じことを行う必要があります。 Mysqlは、同じトリガーを同時に持つことはできません。トリガの2つのセットを組み合わせて、それぞれが2つのものを呼び出す方法はありますか?私はこれを探し、答えを見つけたり、それを理解しているようだ。 SET呼び出しを追加するだけで、エラーがスローされます。ありがとう 現在作業中のトリガが分離されている場合、ここにあります。挿入トリガーの前に2つを組み合わせるmysql

セット1

CREATE TRIGGER combinedDescNameinsert_trigger 
BEFORE INSERT ON markers 
FOR EACH ROW 
SET new.combinedDescName = CONCAT(new.descName, '-', new.DoorGroupID, '-', new.DoorID); 

CREATE TRIGGER combinedDescNameupdate_trigger 
BEFORE UPDATE ON markers 
FOR EACH ROW 
SET new.combinedDescName = CONCAT(new.descName, '-', new.DoorGroupID, '-', new.DoorID); 

セット2

CREATE TRIGGER combinedDoorNameinsert_trigger 
BEFORE INSERT ON markers 
FOR EACH ROW 
SET new.combinedDoorName = CONCAT(new.descName, ' - DoorGroupID: ', new.DoorGroupID, ' - DoorID: ', new.DoorID); 

CREATE TRIGGER combinedDoorNameupdate_trigger 
BEFORE UPDATE ON markers 
FOR EACH ROW 
SET new.combinedDoorName = CONCAT(new.descName, ' - DoorGroupID: ', new.DoorGroupID, ' - DoorID: ', new.DoorID); 
+1

'set doorname = ...、descname = ...'を実行できませんか?レコードのフィールドを1つだけ変更することに限定されません。 –

+1

複数のステートメントを持つトリガー本体に 'BEGIN'と' END'を使います。 – Uueerdo

+0

男性 - なぜ私は別のものを追加するだけの間隔 - よくありがとうMarc B – ClayD

答えて

0

... THEN、LOOP、ストアドプロシージャなどが...複数の文をトリガする場合だけBEGIN...ENDでそれらを囲む必要があり、好きです。そのようなステートメントはそれ自身で終了する必要があるため、デリミタをボディステートメントの終わりとトリガー自体の終わりの間の差分に一時的に変更する必要があります。

DELIMITER $$ 

CREATE TRIGGER combinedDescNameinsert_trigger 
BEFORE INSERT ON markers 
BEGIN 
FOR EACH ROW 
    SET new.combinedDescName = CONCAT(new.descName, '-', new.DoorGroupID, '-', new.DoorID); 
    SET new.combinedDoorName = CONCAT(new.descName, ' - DoorGroupID: ', new.DoorGroupID, ' - DoorID: ', new.DoorID); 
END$$ 

CREATE TRIGGER combinedDescNameupdate_trigger 
BEFORE UPDATE ON markers 
FOR EACH ROW 
BEGIN 
    SET new.combinedDescName = CONCAT(new.descName, '-', new.DoorGroupID, '-', new.DoorID); 
    SET new.combinedDoorName = CONCAT(new.descName, ' - DoorGroupID: ', new.DoorGroupID, ' - DoorID: ', new.DoorID); 
END$$ 

DELIMITER ; 
関連する問題