|
MySQL.RU - Webboard
Вернуться
Вопрос по триггерам (trixtrax63) 20/02/2008 - 00:52:35
Re: Вопрос по триггерам 2 (rtixtrax63) 20/02/2008 - 17:41:05
> Original message text:
> From: trixtrax63 - 20/02/2008 - 00:52:35
> Subject:Вопрос по триггерам
> -----------------
> Уважаемые коллеги , подскажите . Выполняю поочерёдно запросы ( каждую строку ) и получаю ссобщение об ошибке :This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Error 1235 ( Эта версия MySQL еще не поддерживает 'многократные триггеры с тем же самым временем действия и случаем для одной таблицы' )
> Установлен MySQL 5.0.45. ( у знакомого стоит та же версия и подобных проблем с такими триггерами не было )
> --
> -- Definition of trigger `DD`
> --
> DROP TRIGGER `DD`;
> DELIMITER $$
>
> CREATE TRIGGER `DD` BEFORE UPDATE ON `kuler` FOR EACH ROW begin
>
> IF old.A >= new.A THEN
> set new.A = old.A;
> END IF;
>
> IF old.B <= new.B THEN
> set new.B = old.B;
> END IF;
> end $$
>
> DELIMITER ;
>
From: rtixtrax63 - 20/02/2008 - 17:41:05
Subject:Вопрос по триггерам 2
-----------------
Коллеги , подскажите , плиз .
Выполняю запросы и на одном из триггеров получаю сообщение :Эта версия MySQL еще не поддерживает 'многократные триггеры с тем же самым временем действия и случаем для одной таблицы' .
Почему такое может быть , на одной таблице завязан один триггер ???
Прикладываю схему БД ( в общих чертах).
--
-- Create schema `DB`
--
CREATE DATABASE IF NOT EXISTS DB;
USE DB;
--
-- Definition of table `kuler`
--
DROP TABLE IF EXISTS `kuler`;
CREATE TABLE `kuler`(.`Sym`.,`DT`,`A`,`B`,`C`,..);
--
-- Definition of trigger `DD`
--
DELIMITER $$
CREATE DEFINER = `root`@`localhost` TRIGGER `DD` BEFORE UPDATE ON `kuler` FOR EACH ROW begin
IF old.A >= new.A THEN
set new.A = old.A;
end if; ************** на этой строке появляется сообщение об ошибке !!!!!
IF old.B <= new.B THEN
set new.B = old.B;
end if;
set new.C = old.C + new.C;
end $$
DELIMITER ;
--
-- Definition of table `joker`
--
DROP TABLE IF EXISTS `joker`;
CREATE TABLE `joker` (ID,G,K,.......);
--
-- Definition of trigger `twist`
--
DROP TRIGGER /*!50030 IF EXISTS */ `twist`;
DELIMITER $$
CREATE DEFINER = `root`@`localhost` TRIGGER `twist` BEFORE INSERT ON `joker` FOR EACH ROW begin
declare barid int default 0;
declare ts timestamp default Now();
....
....
Select timestamp(curdate(),maketime(hour(new.K),(minute(new.K) div 5)*5,00)) into ts;
select max(ID) into barid from kuler where Sym=new.Sym and DT=ts limit 1;
IF barid>0 THEN
update kuler set A=new.G, B=new.G, C=new.G,... where ID=barid;
ELSE
insert into kuler (... , ..., A, B, C, ...) VALUES(new.Sym, ts, new.G, new.G, new.G, ...,...);
END IF;
end$$
DELIMITER ;
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
33097
|
|