2017-02-02 4 views
-1

私はstackoverflowからいくつかの提案を試みましたが、エラーが発生し続けています。2つのカラムを追加してmysqlの3番目のカラムに格納する

私は何を持っていることの表です:テスト

は私が3列あります:私は何をしたいか

first (varchar) 
last (varchar) 
first_last (varchar) 

を、トリガーを構築するので、私は最初と最後の入力したときに、それを保存していますfirst_lastの値が計算され、保存されます。ここで私は今持っているものだ:私は取得していますエラー

Trigger name: update_first_last 
Table: test 
Time: AFTER 
Event: INSERT 
Definition: UPDATE test SET test.first_last=CONCAT(test.first, test.last) 

#1442 - Can't update table 'test' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. 
+5

しないでください。フルネームを表示したいときはいつも 'first'と' last'を連結してください – RiggsFolly

+0

あなたが試したことの例とあなたが持っているエラーを挙げてください。 – jwatkins

+0

なぜそれをするのは悪い考えですか?私は後で連結することができると思いますが、スクリプトを実行して即座に効果を出すことを意味します。 – EastsideDeveloper

答えて

1

をINSERT文とあなたのトリガの両方が許可されていないテーブル全体を変更したいです。

CREATE TRIGGER update_first_last 
BEFORE INSERT 
ON test 
FOR EACH ROW 
SET NEW.first_last=CONCAT(NEW.first, NEW.last) 

最初が最後NOT NULLとして定義されていない場合、あなたはUPDATEアクションに対して同様のトリガーを作成する必要があります:あなたは、代わりにこのような何かを行うことができます。

+0

私は次のエラーメッセージが表示されます:#1362 - 新しい行の更新は、トリガー後に許可されていません – EastsideDeveloper

+0

そうです、私はコマンドを変更しました - 前にする必要があります。 –

+0

はい、これが動作します – EastsideDeveloper

関連する問題