|
|
|
| возможно ли както сделать цикл в запросе?
тоесть нужно чтото типа такого:
есть 2 таблицы:
берём оттуда всех у кого id меньше 100 удаляем и записываем эти удалённые айди тоесть каждую строку для каждого отдельного айди в другую таблицу? | |
|
|
|
|
|
|
|
для: sl1p
(24.10.2008 в 10:58)
| | я думаю тут больше подойдёт процедура | |
|
|
|
|
|
|
|
для: ronin80
(24.10.2008 в 18:00)
| | Какая процедура?
Задача решается двумя операторами. | |
|
|
|
|
|
|
|
для: Trianon
(24.10.2008 в 18:39)
| | тоесть только пхп? | |
|
|
|
|
|
|
|
для: sl1p
(25.10.2008 в 02:03)
| | Двумя операторами SQL - я имел в виду. | |
|
|
|
|
|
|
|
для: Trianon
(25.10.2008 в 10:31)
| | ну а написать не? :\
я как бы от того что они есть не щаслив:))
2ols это бред, мне с каждым айди нужно действия проводить. Я не совсем ещё туп:) | |
|
|
|
|
|
|
|
для: sl1p
(25.10.2008 в 12:31)
| | ну а в мануал заглянуть не? :\
INSERT INTO tbl ... SELECT .... | |
|
|
|
|
|
|
|
для: Trianon
(24.10.2008 в 18:39)
| | а я и не отрицаю что необходимо выполнение двух операторов, так как здесь требуется два действия: вставка записей и затем удаление их из таблицы источника
вопрос в том как это лучше реализовать, либо средствами php либо в виде хранимой процедуры
для меня удобней воспользоваться процедурой, обеспечив таким образом гарантирование целостности операции посредством использования транзакции и обработчиков исключительных ситуаций на случай ошибок выполнения sql операторов
если вы считаете что это глупо, чтож, тогда я умываю руки | |
|
|
|
|
|
|
|
для: ronin80
(25.10.2008 в 17:46)
| | Я ж спорю разве? Всё так.
Предложите автору хранимую процедуру - он щаслив станет. | |
|
|
|
|
|
|
|
для: Trianon
(25.10.2008 в 18:04)
| | DELIMITER //
DROP PROCEDURE IF EXISTS delete_and_insert//
CREATE PROCEDURE delete_and_insert ()
SQL SECURITY INVOKER
BEGIN
DECLARE EXIT HANDLER FOR SQLSTATE '23000', SQLEXCEPTION
BEGIN
ROLLBACK;
END;
START TRANSACTION;
/*вставляем записи во вторую таблицу*/
Insert Into table2 (id)
Select (id) From table1
Where id<100;
/*удаляем записи из первой таблицы*/
Delete from table1
Where id<100;
COMMIT;
END//
DELIMITER ;
не судите строго если что не так :) | |
|
|
|
|
|
|
|
для: ronin80
(25.10.2008 в 18:20)
| | омг, а как теперь с этим работать?)
мне например нужно забрать поле у каждого удаляемого и потом удалить его..
тоесть я как бы не совсем понял что это и как:) | |
|
|
|
|
|
|
|
для: sl1p
(24.10.2008 в 10:58)
| | 1) Переноити в другую таблицу строки где id<100 (я вот не помню sql-оператор, который реализует это, но он есть (Trianon, подскажет :) )
2) DELETE FROM table WHERE id<100 | |
|
|
|