Forum Webscript.Ru
Общие => Базы данных => Тема начата: for_i_0 от 02 Сентября 2004, 10:44:03
-
Здравствуйте, уважаемые !
проблема такая -> при исполнении запроса:
UPDATE some_tbl SET num = (num+2) WHERE num <= 101 AND num >33
выводится следующая ошибка:
Duplicate entry \'36\' for key 1
на сколько я понимаю он исполняется в следующем порядке 34+2...101+2
и естественно выдается ошибка.
Можно ли изменить пордок исполнения запроса ?
или я мыслю не в том направлении ?
спасибо за внимание :)
-
>> или я мыслю не в том направлении?
Весьма вероятно... Объясни, зачем ты делаешь это, тогда станет понятно, помогать тебе с запросом или объяснять как делать правильно.
-
строки в таблице не нужно никуда перемещать.
Если вы работаете с базой, как будто это примитивный текстовый файл, не научившись абстрагировать хранение данных от их вывода, то база данных вам и вовсе не нужна.
-
tserbis
У меня в таблице хранится статьи...
скрипт выводит текст на сайт мне нужно добавить в архив 2 -е статьи именно в том порядке в котором я исполняю запрос. Тоесть после 33 - ой статьи мне нужно добавить две статьи.
зарание спасибо.
RomikChef
А вы многоуважаемый по всей вероятности "ясновидящий" ;)
и вам спасибо.
-
for_i_0
по-правильному, тебе нужно сделать в этой таблице отдельное поле, по которому ты будешь сортировать и редактируя которое сможешь менять порядок. А нумерация с MySQL вообще не связана, нумеровать статьи надо в PHP при выводе.
-
tserbis
[OFF]спасибо[/OFF]
-
tserbis
оно у него есть
другое дело, что он зачем-то сделал его уникальным индексом, а потом удивляется на дублирование ключей.
-
Хм... Я подумал наоборот - раз уникальный, - значит это ID по смыслу.
Разберётся сам, думаю...
-
RomikChef
Как сказал tserbis оно и есть по смыслу ID и он у меня уникальный
RomikChef:
а потом удивляется на дублирование ключей.
for_i_0:
на сколько я понимаю он исполняется в следующем порядке 34+2...
101+2
и естественно выдается ошибка.
А разобрался я следующим путем:
UPDATE some_tbl SET num = (num+100) WHERE num <= 101 AND num >33
UPDATE some_tbl SET num = (num-98) WHERE num <= 201 AND num >135
благадарю за внимание ;)
-
[OFF]Говорили-балакали - сіли та й заплакали.[/OFF]
-
он у меня уникальный
гы гы гы :-)
-
for_i_0
и он у меня уникальный
Тогда вопрос если он у тебя уникальный, то зачем его менять?
Почитай перед ответом последние 10 тем этого форума, в 80% из них людям "вдалбливается" что ID менять ненужно, даже нельзя, и там же почитай почему...
[модераторам]
Может собрать, что-то похожее на FAQ в этом форуме???
[/модераторам]
-
Есть вот такой, не очень внятный, на мой взгляд: http://faq.phpclub.ru/id
Я пишу, но медленно.
До инкремента еще не добрался.
И... к тому же, щас убедишься - клиент из тех, кто непоколебимо уверен в собственной гениальности. Таким факи не помогают.