







|
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,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
36059
|
|