Триггер для обновления другой ошибки таблицы - PullRequest
0 голосов
/ 09 марта 2012

Я пытаюсь создать триггер обновления в MySQL Community Server 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" после любого обновления в таблице "sales". Я создал триггер:

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 ]

3 голосов
/ 09 марта 2012

У вас есть дополнительный ; в вашем триггере, и так как триггер содержит точки с запятой, вам необходимо временно изменить разделитель, чтобы добавить триггер;

2 голосов
/ 09 марта 2012

У вас есть ошибка ; после предложения SET:

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

Всякий раз, когда MySQL говорит вам , проверьте руководство на предмет правильного синтаксиса для использования рядом с xxx , сначала посмотрите на символ, непосредственно предшествующий xxx , чтобы увидеть, есть ли там ошибка В этом случае, прямо перед началом предложения WHERE.

1 голос
/ 09 марта 2012

У вас есть ; слишком много в вашем синтаксисе

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...