[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Перенос данных
rocker
Добрый день, вот в чем вопрос.

Имеется база, в ней 2 таблицы today и history в today заносится информация об посетителях за сегодня, а в историю кроном необходимо переносить ежедневно все записи вчерашние.

На уме только такое решение

$sql = mysql_query("SELECT * FROM today WHERE date <> '$date'");
while ($row = mysql_fetch_array($sql))
{
mysql_query("INSERT INTO history 'тут заносим данных выбранные из today $row['date'] итд итп'");
mysql_query("DELETE FROM today WHERE `id` = $row['id'] LIMIT 1");
}


Может существуют методы по проще??



Спустя 25 минут, 7 секунд (12.07.2010 - 21:21) vagrand написал(а):
В MySQL есть вот такая конструкция

insert into table_name
select field1, ..., fiedlN
from table_name_2

С ее помощью ты смогеш сделать то что тебе нужно быстрее.

Спустя 8 минут, 53 секунды (12.07.2010 - 21:30) rocker написал(а):
Цитата (vagrand @ 12.07.2010 - 18:21)
В MySQL есть вот такая конструкция

insert into table_name
select field1, ..., fiedlN
from table_name_2

С ее помощью ты смогеш сделать то что тебе нужно быстрее.

Так нужно еще и удалять старые данные

Спустя 21 минута, 34 секунды (12.07.2010 - 21:51) vagrand написал(а):
Ну так удали их по дате

Спустя 12 минут, 9 секунд (12.07.2010 - 22:04) sergeiss написал(а):
Цитата (rocker @ 12.07.2010 - 21:56)
Может существуют методы по проще??

Можно сделать проще smile.gif

Для этого просто удаляешь данные... Никаких ИНСЕРТов!!!
Но - существенно (!) - делаешь триггер на удаление, который все удаляемые данные переносит в историю (ИНСЕРТ только в триггере).

И не важно, сколько команд на удаление у тебя будет. Либо это будет группа (по дате), либо по одной строке - все они окажутся в истории.

Более того - ты можешь в истории добавить еще одно поле (плюс к основным), где будешь записывать дату удаления. Можно добавить еще и кто удалял... Короче говоря, далее всё зависит только от твоей фантазии.

Спустя 1 час, 37 минут, 57 секунд (12.07.2010 - 23:41) sergeiss написал(а):
Вот, нашел... Есть у меня тест, как раз недавно упражнялся smile.gif Только этот код - для Постгре... В "дефолт БД" должно быть что-то ну очень похожее. Идея та же, только букоффки немного другие будут.

CREATE OR REPLACE FUNCTION backup_prim_on_delete()
RETURNS trigger AS
$BODY$

begin

insert into prim_01_backup values (old.*, now(), now() );
return old;
end;

$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;


Таблица prim_01_backup содержит те же поля, что и prim_01 плюс еще два поля (отдельно дата и время удаления). А функция навешена на триггер ПОСЛЕ УДАЛЕНИЯ для таблицы prim_01.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.