我正在构建一个MySQL事件,以便在数据库中创建一个名为timestamp
的表的副本。
CREATE TABLE `db_name`.`tbl_prefix_(SELECT TO_SECONDS(NOW()))` ( [the rest...]
显然这不起作用。我该怎么做才能让它发挥作用?
欢迎任何建议。
由于
答案 0 :(得分:1)
这是一个糟糕的架构。动态生成表不是你应该做的事情。
而是创建一个带有时间戳列的表。例如,如果您之前有3个包含三个时间戳A,B和C的表,那么现在有一个表的时间戳列分别包含值A,B和C.
答案 1 :(得分:0)
为了做到这一点,你需要使用"动态SQL"。也就是说,使用MySQL PREPARE
语句。
您需要做的是使用包含您要执行的SQL文本的字符串填充变量。将变量替换为字符串是微不足道的。
"技巧"是采用动态字符串并像执行SQL语句一样执行它。
这就是PREPARE
语句对我们的作用,接受一个变量,并读取该变量的内容,就像它是一个SQL语句一样。
话虽如此,我还是建议您重新考虑创建一个带有时间戳值的表作为名称的一部分,而不是给出一个更详细地说明这一点的示例代码。
设计解决的问题是什么?并仔细考虑提出的解决方案设计是否会引入一个比它解决的更大的问题。