Задавайте вопросы, мы ответим
Вы не зашли.
CREATE PROCEDURE WITHDRAWAL(IN ClientId INT (11))
BEGIN
DECLARE q TINYINT(1);
SELECT COUNT(*) INTO q FROM timetable
WHERE timetable.ClientId = WITHDRAWAL.ClientId;
IF q>10 THEN
UPDATE clients.Money = clients.Money - (10000 - 10000*0.10)
WHERE clients.Id = WITHDRAWAL.ClientId;
ELSE
UPDATE clients.Money = clients.Money - 10000
WHERE clients.Id = WITHDRAWAL.ClientId;
END IF;
END;
В navicat'е выбираю new query, запускаю -- ругается
1064 -- You have an error in your SQL syntax; ... for the right syntax
to use near '.Money - (10000 - 10000*0.10)
WHERE clients.Id = WITHDRAWAL.ClientId;' at line 7
Отредактированно bldbld (01.02.2010 00:04:03)
Неактивен
UPDATE имя_таблицы SET имя_колонки = ...
http://dev.mysql.com/doc/refman/5.0/en/update.html
Неактивен
Спасибо, исправил. Стал ругаться на WITHDRAWAL.ClientId исправил на ClientId -- заработало;
Неактивен
Процедура отработала.
Терь проблема с триггером который будет вызывать эту процедуру.
DELIMITER ;
CREATE TRIGGER 'myTrigger' AFTER INSERT ON 'timetable' FOR EACH ROW call WITHDRAWAL(timetable.ClientId);
После добавления новой строчки вызывать процедуру и передать ей clientId добовляемой строчки.
Создаетя, но при добавлении строчки ругается -- 1109 - Unknown table 'timetable' in field list.
Пробовал call WITHDRAWAL(ClientId)
При добавлении строчки 1054 - Unknown column 'ClientId' in 'field list'
ROW.ClientId -- 1109 - Unknown table 'timetable' in field list.
Вопрос в том как в триггере обратиться к ячейке текущей(добавленной) строчки.
Неактивен
Нашел))
Обращаться через NEW
DELIMITER ;
CREATE TRIGGER 'myTrigger' AFTER INSERT ON 'timetable' FOR EACH ROW call WITHDRAWAL(NEW.ClientId);
Неактивен