2011-05-18 96 views
3

只是瞭解觸發器,我創建了以下觸發器;MySQL觸發更新,從另一個表中選擇

CREATE TRIGGER `incremental_before_ins_tr` BEFORE INSERT ON incremental` 
FOR EACH ROW 
BEGIN 
SET NEW.source = (Select source from crm_record 
where msisdn = new.msisdn order by dat DESC limit 1); 
END; 

但是,該值似乎沒有得到更新。有任何想法嗎?

回答

1

看起來像你有一個錯字。

您已經輸入了增量後跟反引號而不是反引號。

您的觸發器現在可能綁定到名爲incremental`的表格,而我假設該表格不存在。

既然你已經排除了上述情況。我看到UPDATE關鍵字缺失。在SET行之前添加UPDATE table。用表格名稱替換表格。

+0

列值表名稱這實際上是在這個條目中的錯字,它被綁定到正確的表 – Michael 2011-05-18 20:13:36

+0

我更新帖子。這應該爲你清理一些事情。 – Jrod 2011-05-18 20:35:53

+0

嘗試過,並得到以下錯誤**無法更新存儲的函數/觸發器中的表增量,因爲它已被調用此函數/觸發器的語句使用** – Michael 2011-05-19 07:04:01

4

我已經設法自己解決這個問題。以下是更新後的代碼

CREATE TRIGGER `incremental_before_ins_tr` BEFORE INSERT ON `incremental` 
FOR EACH ROW 
BEGIN 
SET NEW.source = (Select source from crm_record 
where crm_record.msisdn = new.msisdn order by dat DESC limit 1); 
END; 

我需要指定之前,第5行