переименуйте таблицу в 'NOW () + old_table_name' - PullRequest
4 голосов
/ 16 ноября 2009

возможно ли как-то использовать функцию NOW () или что-то подобное в MYSQL rename table ()?

причина, по которой мне это нужно, в том, что вместо того, чтобы сразу отбрасывать старые таблицы, мы предпочитаем сначала переименовать, а затем в old_ date-table-was-take-ouf-of-of-use _ table_name, поэтому, когда мы действительно удалите его, мы знаем, как долго таблица была «недоступна»

1 Ответ

7 голосов
/ 16 ноября 2009

Вы можете создать динамический оператор SQL и выполнить его:

SET @tablename = 'MyTable';

SELECT @query := CONCAT('RENAME TABLE `', @tablename, '` TO `', 
    CURDATE(), @tablename, '`');

PREPARE STMT FROM @query;
EXECUTE STMT;

Функция curdate() возвращает текущую дату в виде строки в формате yyyy-MM-dd.

P.S. Вы не можете выполнять многострочные операторы, подобные этой, из браузера запросов, но вы можете поместить их в файл (например, с именем commandfile.sql) и запустить их следующим образом:

mysql -u <user> -p<password> <dbname> < commandfile.sql
...