SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 31.01.2010 23:33:37

bldbld
Участник
Зарегистрирован: 31.01.2010
Сообщений: 9

Помогите написать процедуру

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)

Неактивен

 

#2 01.02.2010 02:35:15

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите написать процедуру

UPDATE имя_таблицы SET имя_колонки = ...

http://dev.mysql.com/doc/refman/5.0/en/update.html

Неактивен

 

#3 01.02.2010 11:19:21

bldbld
Участник
Зарегистрирован: 31.01.2010
Сообщений: 9

Re: Помогите написать процедуру

Спасибо, исправил. Стал ругаться на WITHDRAWAL.ClientId исправил на ClientId -- заработало;

Неактивен

 

#4 01.02.2010 11:40:31

bldbld
Участник
Зарегистрирован: 31.01.2010
Сообщений: 9

Re: Помогите написать процедуру

Процедура отработала.

Терь проблема с триггером который будет вызывать эту процедуру.

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.

Вопрос в том как в триггере обратиться к ячейке текущей(добавленной) строчки.

Неактивен

 

#5 01.02.2010 11:42:44

bldbld
Участник
Зарегистрирован: 31.01.2010
Сообщений: 9

Re: Помогите написать процедуру

Нашел))
Обращаться через NEW


DELIMITER ;
  CREATE TRIGGER 'myTrigger' AFTER INSERT ON 'timetable' FOR EACH ROW call WITHDRAWAL(NEW.ClientId);

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson