Последние записи
- Как создать полноценный сайт на Open Server
- Получить температуру процессора на bat-файлах
- Динамические массивы в Lazarus / Delphi — индексация элементов
- Многозадачность на бат-файлах
- Дата и время изменения файла
- Правильно объединить ячейки построчно в Microsoft Office Excel
- Пример проигрывания музыки по нотам на бат-файлах (через powershell)
- Ограничение логина при регистрации символами AZ-az, А-Я, а-я и цифры
- Взвешивание любого груза на весах
- CMD/BAT: звуки (2 разных + бонус: сигнал SOS)
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
25th
Июл
MySQL составной запрос
Posted by obzor under sql
Как правильно сделать запрос такого типа:
UPDATE in_main SET SelectionDescription='$SelectionDescription', id=('SELECT MAX('id') FROM `in_main`'+1) WHERE DocumentNumber='$DocumentNumber'
А именно меня интересует строчка
id=('SELECT MAX('id') FROM `in_main`'+1)
.
То есть мне нужно изменить id записи на последний id+1.
P.S. поле id автоинкремент, я бы использовал mysqli_insert_id, но оно работает, только если insert был использован в текущем подключении.
В силу особенностей вложенных запросов MySQL надо более сложно
id=(select x + 1 from (SELECT MAX(z.id) as x FROM in_main z) y)
По логике SQL должно было сработать простое
id=(SELECT MAX(id) FROM in_main)+1
Но MySQL так не хочет, выдает ошибку
ERROR 1093 (HY000) at line 6: You can't specify target table 'in_main' for update in FROM clause
Интернет предлагает обернуть всё ещё одним уровнем вложенности, что и сделано. Это работает.
ИМХО — менять вручную автоинкрементное поле — это как стрелять из пистолета себе в ногу.
Переосмыслите структуру таблицы и алгоритм — для чего вы это все задумали — и думаю, этот вопрос отпадет сам собой
Чтобы изменить автоинкремнтный номер нужно сначала отправить запрос на отключение автоинкремента, изменить номера как Вы хотите и включить автоинкремент. Типа:
mysql_query("ALTER TABLE `Имя Вашей таблицы` CHANGE `ID` `ID` INT(11) NOT NULL", $this->nmpdcl);/*Отключаем автоинкремент*/
mysql_query("ALTER TABLE `Имя Вашей таблицы` CHANGE `ID` `ID` INT(11) NOT NULL AUTO_INCREMENT;", $this->nmpdcl);/*Устанавливаем авоинкремент.*/
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту

пеллетные котлы

Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)


