Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Использование переменной внутри запроса.
 
 автор: Leonsio   (21.05.2008 в 18:14)   письмо автору
 
 

Есть запрос

lock tables `autoinc` write;
select `value` into @val from `autoinc` where `table` = 'table2';
SET @val = @val + 1;
UPDATE `autoinc`
SET `Value` = @val
WHERE `table` = 'table2'
LIMIT 1;
unlock tables;
select @val;

Выдает ошибку "Can not open s Resultset".
Локализовал проблему:
1. select `value` into @val from `autoinc` where `table` = 'table2';
2. select @val;
Та же ошибка, но когда выполняешь шаг 1, а затем шаг 2 по-отдельности, все ок.
MySql 5.1.24 работает под WinXP. Пробовал под Линухом - все ок, работает.
Подскажите, куда копать, сам в мускуле неделю. Нужно парочку запросов, а остальное в Дельфи уже почти готово.

   
 
 автор: Ученик   (21.05.2008 в 18:27)   письмо автору
 
   для: Leonsio   (21.05.2008 в 18:14)
 

Незнаю в чем проблема в вашей ситуации но по коду я понял что вам нужно увеличить на единицу значение определенного поля, почему нельзя сделать вот так?


UPDATE `autoinc` SET `Value` = `Value`+1 WHERE `table` = 'table2'

   
 
 автор: Trianon   (21.05.2008 в 18:49)   письмо автору
 
   для: Ученик   (21.05.2008 в 18:27)
 

Проблема в том, что этот код не позволит определить, какое значение было у поля (или каким оно стало, что в данном случае несущественно)

   
 
 автор: ronin80   (21.05.2008 в 20:20)   письмо автору
 
   для: Leonsio   (21.05.2008 в 18:14)
 

а можно код ошибки?

   
 
 автор: Leonsio   (22.05.2008 в 12:15)   письмо автору
 
   для: Leonsio   (21.05.2008 в 18:14)
 

Пользуюсь оболочкой heidisql, пишет "Can not open s Resultset", а в командной строке после первой строки виснет.
Как заметил Trianon, мне нужно кроме Inc значения поля, получить его явно и все это выполнить в одном запросе, т.к. база многопользовательская, т.е. вариант
Lock ...
Update ...
Unlock...

затем

Lock ...
Select ...
Unlock...

не проходит - выполняются два атомарных действия и между ними может воткнуться другой пользователь.
Я думаю, это какие-то особенности мускуля под Виндой, х.з.

   
 
 автор: Leonsio   (23.05.2008 в 17:45)   письмо автору
 
   для: Leonsio   (21.05.2008 в 18:14)
 

Поставил вместо heidisql 3.0 -heidisql 3.2, заработало.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования