2013-09-30 67 views
0

我有一個表時間planifications:例如:一個月,3個月,6個月 我想我的用戶與此表MySQL的插入日期值 - 觸發

我想創建鏈接根據開始日期和planification表

> CREATE TRIGGER `sum_fin` BEFORE INSERT ON `planificare_leg` FOR EACH 
> ROW BEGIN 
>  IF NEW.`data_final` IS NULL THEN 
>   SET NEW.data_final = 
> (SELECT DATE_ADD(`data_start`,INTERVAL `valoare_durata` `fel_durata`) as data_fin 
> FROM v_users_planificare 
> where codtimp = NEW.codtimp and user_id = NEW.user_id) ; 
>  END IF; 
>  END; 

valoare_durata我定稿日期更新一個觸發器是包含安裝數的整數字段。例如:爲計劃3月,valoare_durata = 3和fel_durata = MONTH

這種錯誤的SQL回報:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'fel_durata) as data_fin FROM v_users_planificare where codtimp = NEW.codtimp an' at line 6

我創建了一個測試,看看會發生什麼:

update planificare_leg l join v_users_planificare plan on plan.user_id = l.user_id and plan.codtimp = l.codtimp set activ = 1 where DATE_ADD(data_start ,INTERVAL 1 MONTH) <= NOW() and data_start >= NOW()

作品

update planificare_leg l join v_users_planificare plan on plan.user_id = l.user_id and plan.codtimp = l.codtimp set activ = 1 where DATE_ADD(data_start ,INTERVAL valoare_durata fel_durata) <= NOW() and data_start >= NOW()

不起作用

+0

不知道這是否適用於MySQL,但是在SQL Server中單引號表示字符串。在那裏,如果你想確定一個字段名稱將使用雙引號。 – asantaballa

回答

0

啊,缺少一個括號

SET NEW.data_final = (SELECT DATE_ADD(`data_start`,INTERVAL `valoare_durata` `fel_durata`)) as data_fin FROM v_users_planificare 
                          ^
+0

沒有。該選擇來自v_users_planificare和DATE_ADD('data_start',INTERVAL'valoare_durata'' fel_durata')爲data_fin – laura

+0

Darn,難倒了。類型值(fel_durata)是允許表達式而不是文字(日,小時,分鐘,...)嗎? – asantaballa

+0

我不知道。我怎麼做? – laura