Estoy tratando de crear una tabla con un nombre basado en el año y el mes actual (2011-09
), pero a MySQL no parece gustarle esto.mysql (5.1)> crear tabla con el nombre de una variable
SET @yyyy_mm=Year(NOW())+'-'+Month(NOW());
CREATE TABLE `survey`.`@yyyy_mm` LIKE `survey`.`interim`;
SHOW TABLES IN `survey`;
+-----------+
| interim |
+-----------+
| @yyyy_mm |
+-----------+
Si hago CREATE TABLE;
sin las garrapatas alrededor @yyyy_mm
, me sale un error de sintaxis genérica.
@yyyy_mm
resuelve a 2020
.
Los identificadores no son variables. Las variables no son identificadores. Esto requiere el uso de "SQL dinámico", es asqueroso en todas las bases de datos con las que he trabajado. –
Ver http://stackoverflow.com/questions/190776/how-to-have-dynamic-sql-in-mysql-stored-procedure y http://stackoverflow.com/questions/929244/mysql-create-table- with-dynamic-database-name y http://stackoverflow.com/questions/5530755/mysql-variables-storing-database-name –