2012-03-09 54 views
-1

我想在MySQL社區服務器5.5.16中創建一個更新觸發器。我有兩個表:觸發器更新另一個表錯誤

create table sales 
    (ono integer primary key, 
    dnr integer not null, 
    osum integer); 

create table salessum 
    (dnr integer primary key, 
    dsum integer); 



alter table sales 
    add constraint fk_sales_salessum foreign key (dnr) 
      references salessum (dnr); 

我需要在表中的「銷售」的任何更新後更新表「salessum」。我已經創建觸發器:

Create trigger up_to_date 
after update on sales 
for each row 
begin 
update salessum 
set dsum = dsum + new.osum; 
where dnr=new.dnr; 
end; 

但我得到了一個錯誤:

ERROR 1064 (42000): 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 'where 
dnr=new.dnr' at line 1 

誰能幫我。謝謝。

回答

3

您的觸發器中還有一個額外的;,並且由於觸發器包含分號,您需要暫時更改分隔符以添加觸發器;

delimiter // 

Create trigger up_to_date 
after update on sales 
for each row 
begin 
update salessum 
set dsum = dsum + new.osum 
where dnr=new.dnr; 
end// 

delimiter ; 
1

你有一個;在你的語法

Create trigger up_to_date 
after update on sales 
for each row 
begin 
    update salessum 
    set dsum = dsum + new.osum /*removed ; here */ 
    where dnr=new.dnr; 
end; 

太多,不要忘了在你的觸發分隔符

例子:

delimiter // 
CREATE TRIGGER ... 
BEGIN 
... 
END; 
// 
delimiter; 
2

你有後一個錯誤;SET從句:

update salessum 
set dsum = dsum + new.osum; <--- Remove that 
where dnr=new.dnr; 

每當MySQL的告訴你檢查正確的語法手冊xxx附近使用,先看看前一個XXX,看是否有錯誤出現的字符。在這種情況下,就在WHERE條款開始之前。

相關問題