SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 21.02.2008 11:01:19

Twix
Завсегдатай
Зарегистрирован: 21.02.2008
Сообщений: 88

Ошибка при выполнении запросов

Уважаемые коолеги , возникла проблема . Во время ввода запросов  ,в  Query Browser , при вводе (Execute) строки в триггере появляется сообщение об ошибке : Эта версия 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 ;

Неактивен

 

#2 21.02.2008 11:07:26

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Ошибка при выполнении запросов

DELIMITER - команда консоли, в MySQL Query Browser не обязана работать. Посмотрите еще SHOW TRIGGERS, есть ли у Вас уже триггеры (по идее конечно они долны быть удалены при удалении таблицы)

Неактивен

 

#3 21.02.2008 14:00:13

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Ошибка при выполнении запросов

Судя по ошибке, Вы пытаетесь на одну таблицу создать второй триггер
с другим именем, но с теми же параметрами запуска. Подозреваю, что это
первый триггер (BEFORE UPDATE), т.к. второй явно удаляется перед созданием.

Неактивен

 

#4 21.02.2008 23:31:01

Twix
Завсегдатай
Зарегистрирован: 21.02.2008
Сообщений: 88

Re: Ошибка при выполнении запросов

Бальшое спасибо за ответ , да действительно ,  как оказалось в Query Browser Delimiter не срабатывает .
А это в свою очередь вызвало появление ошибки , т.к. в тексте присутствует ещё один триггер .
Ввёл запросы через командную строку и всё стало ОК!!!

P.S. : Только вот всё же в Query Browser как то понагляднее , да и попроще . Может как нибудь можно избежать проблем( связанныых с Delimiter)  при работе с данной утилитой ???

Отредактированно Twix (21.02.2008 23:31:54)

Неактивен

 

#5 22.02.2008 02:35:10

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Ошибка при выполнении запросов

delimiter работает тогда, когда у Вас открыто окошко не resultset, а script.
В этом случае Query Browser ожидает, что будет введено несколько команд
и будет обрабатывать ограничители команд самостоятельно.

Неактивен

 

Board footer

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