我有一个更新表的过程。但是,我需要在每次更新之前备份该表。因此,我可以通过过程备份表的唯一方法是创建一个表并将所有信息从一个表插入到另一个表。
所以我需要做的是创建一个带有随机值的表名来区分不同的表。理想的解决方案是“New_Table_Name_TIMESTAMP”,因此将时间戳附加到字符串中。
我的问题是如何创建一个在其名称中添加时间戳的表 New_table_name_201412301044
我尝试过以下方法
DECLARE new_table varchar(100) DEFAULT '';
SET new_table = CONCAT('WORKFLOW_BU_', client_id_to_update, '_', unix_timestamp() );
CREATE TABLE data_import.new_table LIKE development.inventory_engine;
INSERT INTO data_import.new_table
SELECT * FROM development.inventory_engine;
但它创建了一个名为“new_table”的表名称,而不是变量
谢谢
最佳答案
您将必须使用所谓的动态 SQL(也称为“服务器端准备好的语句”)来执行此操作。普通 SQL 禁止使用变量作为表或列的名称。
请参见此处。
http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html
关于mysql - 如何在mysql中创建一个随机名称的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20845528/