Привет. Mysql. Клонирую запись в таблице, PHP: if(cmsCore::request('clon')){ $clon = cmsCore::request('clon'); $inDB->query(" CREATE TEMPORARY TABLE temp SELECT * FROM cms_walet WHERE id = {$clon}"); $inDB->query("UPDATE temp SET id = (SELECT id FROM cms_walet ORDER by id DESC LIMIT 1 )+1 where id = {$clon}"); $sql = $inDB->query("INSERT INTO cms_walet SELECT * FROM temp "); $inDB->query("DROP TEMPORARY TABLE IF EXISTS temp"); } Запись клонируется,но в таблице остаётся ещё и пустая запись. Как поправить это дело?
Нда.. Больше вопросов ... - зачем использовать временную таблицу? - неужели id не аатоинкремент уникальный? - зачем id+1? - в чем смысл клона? Почему не так? Код (Text): INSERT INTO cms_walet (SELECT cw.* FROM cms_walet AS cw WHERE cw.id = {$clone})
Все вопросы,кроме последнего имеют место быть). В запросах не очень.Какой пример первый попался тот и решил использовать). Просто тупанул и внимательно не разобрался. Спасибо.
Не совсем тупанул.Вспомнил). Такой запрос выдаёт ошибку. Duplicate entry '1' for key 'PRIMARY' хотя id первичный и уникальный и аатоинкремент присутствует
Ну потому что пытается вставить с таким же id. Чтоб такого не было нужно явно перечислить все поля кроме ид, и в темноте и в селекте
Блин, в том и дело, что явно не хочется --- Добавлено --- Вопрос остаётся актуальным. Почему не удаляется временная
HTML: CREATE TABLE `cms_walet` ( `id` int(11) NOT NULL, `category_id` int(11) NOT NULL, `user_id` int(11) NOT NULL, `pubdate` date NOT NULL, `title` varchar(200) NOT NULL, `content` mediumtext NOT NULL, `shop` varchar(100) NOT NULL, `price` float(8,2) NOT NULL, `type` varchar(11) NOT NULL, `sum` float(6,2) NOT NULL, `count` int(11) NOT NULL, `valute` varchar(11) NOT NULL, `cash` varchar(100) NOT NULL, `file` varchar(255) NOT NULL, `unit` varchar(11) NOT NULL, `published` tinyint(4) NOT NULL DEFAULT '1' ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO `cms_walet` (`id`, `category_id`, `user_id`, `pubdate`, `title`, `content`, `shop`, `price`, `type`, `sum`, `count`, `valute`, `cash`, `file`, `unit`, `published`) VALUES (1, 2, 1, '2020-09-30', 'Молоко', '', 'Магазин', 0.00, 'minus', 0.00, 0, 'Руб.', 'Наличные', '', 'Шт.', 1), (2, 2, 2, '2020-09-30', 'Каша', '', 'Магазин', 0.00, 'minus', 0.00, 0, 'Руб.', 'Наличные', '', 'Шт.', 1); ALTER TABLE `cms_walet` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `id` (`id`), ADD KEY `category_id` (`category_id`), ADD KEY `user_id` (`user_id`), ADD KEY `id_2` (`id`); ALTER TABLE `cms_walet` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4; COMMIT;
Сделал следующий запрос Код (Text): CREATE TEMPORARY TABLE temp SELECT * FROM cms_walet WHERE id = 2; UPDATE temp SET id = (SELECT id FROM cms_walet ORDER by id DESC LIMIT 1)+1 where id = 2; INSERT INTO cms_walet SELECT * FROM temp; DROP TEMPORARY TABLE IF EXISTS temp; В cms_walet появилась еще одна строка. Таблицы temp в базе не обнаружил. Уточните проблему.
Да, таблица temp удаляется. Запись клонируется. Но откуда то берётся пустая строка в таблице cms_walet. Откуда?
Да,уж.. Прямым запросом у меня тоже нет пустой.Хз тогда в чём дело. Попробую в отдельный файл вынести запрос. Может что то где то цепляется. --- Добавлено --- Блин. Спасибо большое за участие и помощь. Разобрался.После окончания кода с запросом в ajax.php не прописал exit;