Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Триггер BEFORE INSERT (Mete0) 06/03/2008 - 19:55:37
      Re: Триггер BEFORE INSERT (Mete0) 07/03/2008 - 00:37:52
      Re: Триггер BEFORE INSERT (Vladimir) 12/08/2009 - 14:27:18

> Original message text:
> From: Mete0 - 06/03/2008 - 19:55:37
> Subject:Триггер BEFORE INSERT
> -----------------
> Сознаю триггер
>
> CREATE TRIGGER `number_inc` BEFORE INSERT ON `order`
> FOR EACH ROW BEGIN
> DECLARE done TINYINT UNSIGNED DEFAULT 0;
> DECLARE curNumber SMALLINT UNSIGNED DEFAULT 0;
> DECLARE cur1 CURSOR FOR SELECT MAX(`number`)+1 FROM `order` WHERE `date`=NEW.date LIMIT 1;
> DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
> OPEN cur1;
> FETCH cur1 INTO curNumber;
> IF done THEN
> SET NEW.number = curNumber;
> ELSE
> SET NEW.number = 1;
> END IF;
> CLOSE cur1;
> END;
>
> Его задача, при добавление новой записи в таблицу "order" если есть, то находить максимальный номер + 1 "number" для указанной "date" и изменять его на найденный макс. номер + 1, если нет ни одной записи для указанной "date", то выставлять 1 для "number".
>
> done != 1 не могу понять почему. (в таблице есть необходимые записи для выполнения запроса cur1)
>


From: Mete0 - 07/03/2008 - 00:37:52
Subject:Триггер BEFORE INSERT
-----------------
Вопрос закрыт, сделал так:
CREATE TRIGGER `number_inc` BEFORE INSERT ON `order`
FOR EACH ROW BEGIN
SELECT max(`number`) INTO @curNumber FROM `order` WHERE `date` = NEW.date;
IF @curNumber > 0 THEN
SET NEW.number = @curNumber + 1;
END IF;
END


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
36059



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |