[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с триггером
Страницы: 1, 2
Okulo
в общем не получается у меня нормально триггер прописать
все попытки воткнуть BEGIN END вызывают ошибки :(
последняя такая -
This version of MySQL doesn't yet support "multiple triggers" with the same action ...

может как нибудь по другому попробовать IF прописать? -
INSERT INTO `company_history` SET company_id = OLD.id, reg_date = OLD.end_register,  upd_date = OLD.update_time, action = 1,  date = CURRENT_TIMESTAMP()



MySQL - 5.1.65
SlavaFr
если ты назвал поле "date" , что в вступает в конфликт имеющейся функции date(), то используй его в подобающих кавычках `date`

K стате ошибки, которые выдает система нам немаловажны и ты можеш с нами ими поделится.


_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Okulo
"This version of MySQL doesn't yet support "multiple triggers" with the same action time and event for one table"
вот такая была ошибка.
killer8080
Okulo
покажи код триггера целиком
sergeiss
Valick - то есть, ты хочешь сказать, что с триггерами работают только те, кто не умеет "по-нормальному" работать с БД? Не знаю, что ты имел ввиду, но из твоих слов следует именно это smile.gif

Автору темы: у тебя в тексте ошибки прямо сказано, что ты не можешь назначить еще один триггер на ту же таблицу и то же событие. Мускуль же, однако же smile.gif В Постгре все намного лучше в этом смысле.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valick
sergeiss, в корне неверное следствие smile.gif
я лишь сказал, что хуже когда используют триггер там где он нафиг не нужен, а только лишь для того чтобы показать свою "крутость"

_____________
Стимулятор ~yoomoney - 41001303250491
sergeiss
Если это неверный вывод, то объясни, плз, почему ты отвечал именно на мои слова? Когда цитируют чьи-то слова, то ответ как бы подразумевается на эти слова. Вот мне и не понятно, что же так вызвало такой твой ответ. Или это была "общая рассуждалка"?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
killer8080
DELIMITER |
CREATE TRIGGER `history_tr` AFTER UPDATE ON `company`
FOR EACH ROW BEGIN

IF NEW.update_time != OLD.update_time THEN
SET @action = 1;
ELSE
SET @action = 2;
END IF;

INSERT INTO `company_history`
SET
`company_id` = OLD.`id`,
`reg_date` = OLD.`end_register`,
`upd_date` = OLD.`update_time`,
`action` = @action,
`date` = NOW()

END;
|

DELIMITER ;

SlavaFr
я вспомнил правило из clean code http://ru.wikipedia.org/wiki/KISS_%28%D0%B...%D0%B8%D0%BF%29
В принципе уже сейчас видно, что возникают проблемы при создании триггера, не стоит ли их сразу избежать, так как еще куча других людей потеряют время, чтоб в них разобратся и врубится, что они существуют и для какой таблицы.

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Okulo
я в первую очередь сейчас хочу понять для себя как это работает. Научиться применять триггеры в общем.
но пока безуспешно )

и думаю они решат мне многие задачи по логированию.

killer8080 я скопипастил ваш код и получил -

#1064 - 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 18
sergeiss
Okulo, я чуть ранее писал уже, что по первому твоему вопросу достаточно перевести текст ошибки. Из него следует, что у тебя уже есть тригер такой же. И в данной версии мускуля ты не можешь назначить более одного триггера определенного вида на определенную таблицу.

Ты сначала найди, что там за триггер назначен. А потом обнови его, добавь тот новый функцинал, что ты хотел сделать.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Okulo
sergeiss я конечно же читал выше - но у меня нет триггера уже другого )

сейчас вроде как END не нравится ..
SlavaFr
попробуй после NOW() поставить ";"
тогда опять получиш ошибку о которой говорил @sergeiss

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Okulo
Цитата (SlavaFr @ 31.01.2013 - 13:52)
попробуй после NOW() поставить ";"
тогда опять получиш ошибку о которой говорил @sergeiss

точняк!

спасибо всем.
очень помогли
killer8080
Цитата (SlavaFr @ 31.01.2013 - 15:52)
попробуй после NOW() поставить ";"

упс, провтыкал user posted image
Okulo
SHOW triggers
увидишь все триггеры, какие есть в БД. Скорей всего проблема была в том, что остался триггер от предыдущих попыток, его нужно сначала удалить
DROP TRIGGER history_tr
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.