|
|
|
| Как можно объединить 2 запроса.
1 запрос удаляет все из таблицы
2 запрос записывает туда значения
(DELETE FROM cookie_g) UNION (INSERT INTO cookie_g (cook) VALUES ('odin'))
я знаю что UNION работает только для объединения SELECT но а можно какую нибудь альтернативу? | |
|
|
|
|
|
|
|
для: ntro123
(21.05.2011 в 10:50)
| | Нет, так не получится... А почему хотите одни запросом сделать? Вроде выгода не очень большая? Или просто операция частая? Можно оформить эти операторы в виде хранимой процедуры - тогда её можно будет выполнять одним запросом. | |
|
|
|
|
|
|
|
для: cheops
(21.05.2011 в 11:07)
| | Нет, про100 интересно.
А вот реально что нужно будет сделать 1 запрос, т.к. операция будет очень частой это вот такой запрос
"(SELECT maketime FROM time) UNION (UPDATE time SET maketime='".time()+1."')" | |
|
|
|
|
|
|
|
для: ntro123
(21.05.2011 в 11:25)
| | Это проще сделать в рамках одного UPDATE-запроса (если я правильно понял задумку)
UPDATE `time`
SET maketime = maketime + 1
|
| |
|
|
|
|
|
|
|
для: cheops
(21.05.2011 в 11:39)
| | нет.
Задумка такая. Есть парсер, который может отправлять запрос раз в 1 секунду. Но к этому парсеру могут в один момент обратиться 50 человек, и значит парсер забанят. Чтобы этого избежать я буду в БД записывать время time(), потом буду его извлекать и сразу же записывать реальное время на 1 больше.
Потом когда будет следушее обращение оно тоже ивлечет время которое было записано и посмотрит
while($res['maketime']>time()) sleep(1);
Таким образом добиваемся очереди.
Т.е. запрос к базе должен получить время и одновреммено записать туда РЕАЛЬНОЕ время на единицу больше.
ПС. РЕАЛЬНОЕ - значит time() а не то что было до этого в БД | |
|
|
|
|
|
|
|
для: ntro123
(21.05.2011 в 11:46)
| | Правильно ли я понял, что вам нужно, пока вы выбираете и обновляете время, чтобы никто другой не залез с добавлением данных в таблицу? Если да, вам нужны транзакции (т.е. таблицы типа InnoDB). | |
|
|
|
|
|
|
|
для: cheops
(21.05.2011 в 12:54)
| | Нет.
Мне нужно из поля maketime выташить его значение, и записать абсолютно другое значение.
В 2 командах это делается вот так
SELECT maketime FROM time
UPDATE time SET maketime='тут что угодно из цифр'
хотелось бы это все в 1 запрос, т.к. выигрыш будет весомым. | |
|
|
|
|
|
|
|
для: ntro123
(21.05.2011 в 13:12)
| | Тогда в один запрос никак объединить не удастся. | |
|
|
|
|
|
|
|
для: cheops
(21.05.2011 в 13:16)
| | ясно, спасибо, а то сейчас бы рыл до потери пульса как объединить! | |
|
|
|