2013-08-22 3 views
2

Сначала у меня есть 2 таблицы с именем «item» и «buy_item» // столбец «stock» находится в таблице элементов, а столбец «qty» - таблица ini buy_item , тогда у меня есть запрос SQL SERVER чтобы создать триггер, как этотСоздать запрос для MYSQL Trigger

CREATE TRIGGER trigger1 
ON dbo.buy_item 
FOR UPDATE 
AS begin 
UPDATE item SET stock = stock - qty FROM deleted WHERE item.id = deleted.id 
UPDATE item SET stock = stock + qty FROM inserted WHERE item.id = deleted.id 
end 

мне нужна помощь, чтобы создать ту же самую функцию этого запроса в MYSQL запрос и я уже сделать это

CREATE TRIGGER trigger1 
BEFORE UPDATE ON buy_item 
FOR EACH ROW 
BEGIN 
UPDATE item SET stock = stock - buy_item.qty WHERE item.id=buy_item.id 
UPDATE item SET stock = stock + NEW.qty WHERE item.id=buy_item.id 
END 

, но это не работает, это говорит, что синтаксис неверен

может быть, кто-нибудь может помочь об этом

Благодарности Перед

+0

Пожалуйста включите любые соответствующие сообщения об ошибках в вашем вопросе. – tadman

ответ

1

Предполагая, что вы не можете изменить идентификатор товара в buy_item триггер в MySql должен выглядеть следующим образом

CREATE TRIGGER trigger1 
AFTER UPDATE ON buy_item 
FOR EACH ROW 
    UPDATE item 
    SET stock = stock + NEW.qty - OLD.qty 
    WHERE id = NEW.id; 

Вот SQLFiddle демо

+0

он работает !! спасибо за ваше решение, это действительно помогает мне :) –

0

Тело триггера в MySQL требует несколько команд SQL, разделенных точкой с запятой (;). Чтобы создать полный код запуска, нужно определить собственный разделитель на что-то еще, например $$.

DELIMITER $$ 
CREATE TRIGGER trigger1 
BEFORE UPDATE ON buy_item 
FOR EACH ROW BEGIN 
UPDATE item SET stock = stock - buy_item.qty WHERE item.id=buy_item.id; 
UPDATE item SET stock = stock + NEW.qty WHERE item.id=buy_item.id; 
END$$ 

Этот веб-сайт, как помог мне в прошлом для синтаксиса и других соответствующих вопросов, MySQL и запускает http://www.sitepoint.com/how-to-create-mysql-triggers/

+0

Я уже пытался это сделать, но он по-прежнему просит меня сделать правильный синтаксис около этого синтаксиса –

0

это сообщение об ошибке после того, как я пишу с синтаксисом

DELIMITER $ $
CREATE TRIGGER trigger1
ПЕРЕД ОБНОВЛЕНИЕМ buy_item
ДЛЯ КАЖДОЙ ROW BEGIN
UPDATE item SET stock = stock - buy_item.qty WHERE item.id = buy_item.id;
UPDATE item SET stock = stock + NEW.qty WHERE item.id = buy_item.id;
END $$

«У Вас есть ошибка в вашем SQL синтаксиса, проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса использовать вблизи«DELIMITER $$
CREATE TRIGGER Trigger1
перед обновлением ON buy_item
для каждой строки»в строке 1' »

Моя версия сервера MySQL является 5.5.13

Смежные вопросы