Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Триггер 
V
    Опции темы
Reptor
Дата 8.8.2006, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



Вот есть вот такой тригер

Код

CREATE TRIGGER test_trigger BEFORE INSERT ON stat_sales
  FOR EACH ROW
   BEGIN
    INSERT INTO stat_summarize SET sales = 1
 ON DUPLICATE KEY UPDATE sales = sales+1;
 END;

и такая ошибка

Код

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 'INSERT INTO stat_summarize SET sales = 1
 ON DUPLICATE KEY UPDATE sales = sales' at line 4


никак немогу её избежать. В чём тут дело?
PM MAIL ICQ   Вверх
Reptor
Дата 8.8.2006, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



да и ещё одно с какой версии они появились?
PM MAIL ICQ   Вверх
Ignat
Дата 9.8.2006, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Цитата(Reptor @  8.8.2006,  20:07 Найти цитируемый пост)
да и ещё одно с какой версии они появились? 

Заглядываем в мануал и читаем:
Цитата

Support for triggers is included beginning with MySQL 5.0.2.


А ошибка, вероятнее всего, в разделителе предложений. По умолчанию это ";". А для корректного создания его требуется сменить, например:
Код

mysql> delimiter //


Т.е. в вашем примере:
Код

delimiter //
CREATE TRIGGER test_trigger BEFORE INSERT ON stat_sales
  FOR EACH ROW
   BEGIN
    INSERT INTO stat_summarize SET sales = 1
 ON DUPLICATE KEY UPDATE sales = sales+1;
 END;
//
delimiter ;



--------------------
Теперь при чем :P
PM   Вверх
comtat
Дата 9.8.2006, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



Цитата(Reptor @  8.8.2006,  18:50 Найти цитируемый пост)
INSERT INTO stat_summarize SET sales = 1

Помоему недо делать так 
Код
SET sales = 1



--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
Ignat
Дата 9.8.2006, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



comtat,  ты о чём smile 
Я в этом запросе ошибки не вижу.


--------------------
Теперь при чем :P
PM   Вверх
Reptor
Дата 9.8.2006, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



зделал с Delimeter вот такая вот ошибка вывалилась

Код

Error
There seems to be an error in your SQL query. The MySQL server error output below, if there is any, may also help you in diagnosing the problem

ERROR: Unknown Punctuation String @ 11
STR: //
SQL: delimiter //
CREATE TRIGGER test_trigger BEFORE INSERT ON stat_sales
  FOR EACH ROW
   BEGIN
    INSERT INTO stat_summarize SET sales = 1
 ON DUPLICATE KEY UPDATE sales = sales+1;



SQL query: 

delimiter // CREATE TRIGGER test_trigger BEFORE INSERT ON stat_sales FOR EACH ROW BEGIN INSERT INTO stat_summarize SET sales = 1 ON DUPLICATE KEY UPDATE sales = sales+1; 

MySQL said:  

#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 'delimiter //
CREATE TRIGGER test_trigger BEFORE INSERT ON stat_sales
  FOR EAC' at line 1 

PM MAIL ICQ   Вверх
Ignat
Дата 9.8.2006, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Цитата(Reptor @  9.8.2006,  10:59 Найти цитируемый пост)
вот такая вот ошибка вывалилась

А клиентом каким пользуетесь?


--------------------
Теперь при чем :P
PM   Вверх
Reptor
Дата 9.8.2006, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



Цитата

А клиентом каким пользуетесь? 


и phpmyadmin u MySQL Query Browser
PM MAIL ICQ   Вверх
Ignat
Дата 9.8.2006, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Попробуйте воспользоваться обычным консольным 
Цитата

mysql -u user



--------------------
Теперь при чем :P
PM   Вверх
Reptor
Дата 9.8.2006, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



Ignat,  а как БД указать
PM MAIL ICQ   Вверх
Ignat
Дата 9.8.2006, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



1. Вариант
Код

mysql --user=root -p --database=имя_БД


2. Вариант
Код

mysql> use имя_БД



--------------------
Теперь при чем :P
PM   Вверх
comtat
Дата 9.8.2006, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



Код

./mysql -u юзер -p
..
> connect бд 



--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
Ignat
Дата 9.8.2006, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



comtat, объясни, пожалуйста, на хрена делать реконнект к серверу, когда требуется всего лишь выбрать БД?!!!


--------------------
Теперь при чем :P
PM   Вверх
comtat
Дата 9.8.2006, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



Цитата(comtat @  9.8.2006,  13:36 Найти цитируемый пост)
connect бд

Так ты приконнектишся к базе и сможешь с ней работать 
иначе 
Код

mysql>select count(*) from Logins;
ERROR 1046 (3D000): No database selected



Это сообщение отредактировал(а) comtat - 9.8.2006, 13:48


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
Ignat
Дата 9.8.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Цитата(comtat @  9.8.2006,  14:46 Найти цитируемый пост)
иначе 

Иначе нужно использовать use. А лишний реконнект - лишняя нагрузка сервера.

Проверяем очень просто:

Цитата

>mysql -u root -p

mysql> \s
--------------
mysql  Ver 14.12 Distrib 5.0.18, for Win32 (ia32)

Connection id:          31
Current database:
...
...

mysql> use test
Database changed
mysql> \s
--------------
mysql  Ver 14.12 Distrib 5.0.18, for Win32 (ia32)

Connection id:          31
Current database:       test
...
...

mysql> connect mysql
Connection id:    32
Current database: mysql

mysql> \s
--------------
mysql  Ver 14.12 Distrib 5.0.18, for Win32 (ia32)

Connection id:          32
Current database:       mysql
...
...

mysql>


Как видно, команда use выбирает БД без реконнекта.

ЗЫ. Это уже сплошной оффтоп.


--------------------
Теперь при чем :P
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0844 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.