MySQL удалить из базы данных, где - PullRequest
1 голос
/ 18 марта 2019

В моей базе данных у меня есть большое количество таблиц, которые содержат даты.Это точные даты истечения срока действия.

В настоящее время я выполняю следующие команды, чтобы удалить все строки, которые старше указанной даты, используя:

 DELETE FROM tablename WHERE DATE(datepoint) < '2019-03-18'

1) Есть ли способ, которым явместо этого можно искать и удалять из всей базы данных вместо того, чтобы вручную изменять имя таблицы и каждый раз запускать команду?

Ответы [ 3 ]

1 голос
/ 18 марта 2019

Вы можете использовать функцию PHP. В любом случае, я не рекомендую удалять какие-либо записи, просто отфильтруйте ваши запросы только за последние 3 месяца

0 голосов
/ 18 марта 2019

Вы должны использовать процедуру (или функцию):

Определите процедуру:

mysql> CREATE PROCEDURE delete_from_table(OUT table_name char(20))
-> BEGIN
->   delete from table_name WHERE DATE(datepoint) < '2019-03-18';
-> END//
mysql> delimiter ;

Процедура ВЫЗОВА:

mysql> CALL delete_from_table(@table1);
mysql> CALL delete_from_table(@table2);
mysql> CALL delete_from_table(@table3);
0 голосов
/ 18 марта 2019

Возможно, рассмотрите возможность истечения срока действия в своей таблице EXPIRY_DATES.Похоже, это может быть важной концепцией в вашей области.Затем попросите другие таблицы указать правильную дату истечения срока действия с помощью внешнего ключа.Использование каскадных правил удаления из EXPIRY_DATES приведет к удалению записей из всех дочерних таблиц при удалении одной даты истечения срока действия из EXPIRY_DATES.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...