|
|
|
| Есть запрос
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. Пробовал под Линухом - все ок, работает.
Подскажите, куда копать, сам в мускуле неделю. Нужно парочку запросов, а остальное в Дельфи уже почти готово. | |
|
|
|
|
|
|
|
для: Leonsio
(21.05.2008 в 18:14)
| | Незнаю в чем проблема в вашей ситуации но по коду я понял что вам нужно увеличить на единицу значение определенного поля, почему нельзя сделать вот так?
UPDATE `autoinc` SET `Value` = `Value`+1 WHERE `table` = 'table2'
|
| |
|
|
|
|
|
|
|
для: Ученик
(21.05.2008 в 18:27)
| | Проблема в том, что этот код не позволит определить, какое значение было у поля (или каким оно стало, что в данном случае несущественно) | |
|
|
|
|
|
|
|
для: Leonsio
(21.05.2008 в 18:14)
| | а можно код ошибки? | |
|
|
|
|
|
|
|
для: Leonsio
(21.05.2008 в 18:14)
| | Пользуюсь оболочкой heidisql, пишет "Can not open s Resultset", а в командной строке после первой строки виснет.
Как заметил Trianon, мне нужно кроме Inc значения поля, получить его явно и все это выполнить в одном запросе, т.к. база многопользовательская, т.е. вариант
Lock ...
Update ...
Unlock...
затем
Lock ...
Select ...
Unlock...
не проходит - выполняются два атомарных действия и между ними может воткнуться другой пользователь.
Я думаю, это какие-то особенности мускуля под Виндой, х.з. | |
|
|
|
|
|
|
|
для: Leonsio
(21.05.2008 в 18:14)
| | Поставил вместо heidisql 3.0 -heidisql 3.2, заработало. | |
|
|
|