Резервное копирование ряда в таблице в другую таблицу перед delete

qru

Новичок
Резервное копирование ряда в таблице в другую таблицу перед delete

Подскажите пожалуйста, есть ли возможность переместить из таблицы один ряд в другую таблицу в этой же базе.. ну чтобы не удалять безвозвратно а сделать бекап в другой таблице.. может как-то можно делать без трех шагов SELECT+DELETE+INSERT а одним простым запросом?

Спасибо!
 

Fortop

Новичок
Одним нельзя. Двумя, если я правильно помню, можно.

А можно триггером. Тогда запрос будет лишь DELETE, остальное будет в триггере
 

fixxxer

К.О.
Партнер клуба
если я правильно догадался, чего ты хочешь, то лучше ротировать таблицы а не гонять данные туда сюда.

создавать таблицу вида Table_YYYYMM раз в месяц скажем. или переименовывать еще можно...
 

qru

Новичок
Автор оригинала: fixxxer
если я правильно догадался, чего ты хочешь, то лучше ротировать таблицы а не гонять данные туда сюда.

создавать таблицу вида Table_YYYYMM раз в месяц скажем. или переименовывать еще можно...
Спасибо, но нет.. Я хочу чтобы можно было удалять из базы определенные строки, но чтобы они не безвозвратно удалялись,
а хранились в бекапной таблице аналогичной по структуре рабочей таблице.
Но в целом ваше решение в теории можно было бы тоже использовать, если ввести столбец deleted и туда ставить 1 когда удаляется а потом раз в месяц перемещать окончательно..
Но это придется везде в запросах делать проверку на то что deleted == 0 не очень удобно.
Думаю нужно просто сложным запросом одним-дввумя сделать, как предлагает Fortop если я его правильно понял.. Но я в сложных запросах пока не очень рублю..
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
qru
ты не лог ли пишешь?)
 

qru

Новичок
Автор оригинала: c0dex
qru
ты не лог ли пишешь?)
Лог не причем.. Удаляется из базы допустим сообщение, и бекапим его на всякий случай.. чтобы при надобности можно было востановить.
 

craz

Нестандартное звание
Автор оригинала: qru
Лог не причем.. Удаляется из базы допустим сообщение, и бекапим его на всякий случай.. чтобы при надобности можно было востановить.
не вооруженным взглядом видно такое сообщение не "удаляется" вы всего лишь хотите его скрыть. почему и правда не выставить ему флаг Read, NoRead какой нить, а не создавать две таблицы и таскать между ними данные
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
qru
Это и есть логирование, только изменений (сообщений), а не действий. И 2 таблицы тут реально не нужны, как тебе и сказал craz
 

[Gisma]

Новичок
вы видимо хотите сохранять удаленные документы (например новости) в "корзине" сайта? то флаг deleted подойдет

c0dex под логированием вообще тонну понятий можно включить:) например, создание документа
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
[Gisma]
Если вообще рассматривать понятие то да, но в данном случае это как раз своего рода история переписки)
 

weregod

unserializer
бэз триггера:

INSERT INTO `destination_table` SELECT * FROM `source_table` WHERE [срезко];
DELETE FROM `source_table`WHERE [срезко];

hint: следите за автоинкрементальными полями
 
Сверху