2017-02-02 37 views
-1

我已經嘗試了幾個來自stackoverflow的建議,但我一直在遇到錯誤。在mysql中添加兩列並存儲在第三列

我有一個表:測試

我有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 - 在觸發後不允許更新NEW行 – EastsideDeveloper

+0

沒錯,我更改了命令 - 應該是BEFORE INSERT。 –

+0

是的,這是有效的 – EastsideDeveloper

相關問題