Новости
Документация
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: Vladimir - 12/08/2009 - 14:27:18
Subject:Триггер BEFORE INSERT
-----------------
Сделал по твоему результату, изменив под свою БД.

CREATE TRIGGER `number_inc` BEFORE INSERT ON `guestbook`
FOR EACH ROW BEGIN
SELECT max(`id`) INTO @curNumber FROM `guestbook`;
IF @curNumber > 0 THEN
SET NEW.id = @curNumber + 1;
END IF;
END

пишет 4 ошибки, от которых не могу избавиться. Если убрать все ";", будет 1 ошибка. Ни как не пойму, почему так

Error code 1064, SQL state 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 '' at line 3
Line 1, column 1

Error code 1064, SQL state 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 'IF @curNumber > 0 THEN
SET NEW.id = @curNumber + 1' at line 1
Line 4, column 1

Error code 1064, SQL state 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 'END IF' at line 1
Line 6, column 1

Error code 1064, SQL state 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 'END' at line 1
Line 7, column 1

Execution finished after 0 s, 4 error(s) occurred.


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

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

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



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