Próbuję utworzyć tabelę o nazwie na podstawie bieżącego roku i miesiąca (2011-09
), ale MySQL nie wydaje się to podoba.mysql (5.1)> utwórz tabelę z nazwą ze zmiennej
SET @yyyy_mm=Year(NOW())+'-'+Month(NOW());
CREATE TABLE `survey`.`@yyyy_mm` LIKE `survey`.`interim`;
SHOW TABLES IN `survey`;
+-----------+
| interim |
+-----------+
| @yyyy_mm |
+-----------+
Jeśli robię CREATE TABLE;
bez kleszczy wokół @yyyy_mm
, dostaję ogólny błąd składni.
@yyyy_mm
postanawia na 2020
.
Identyfikatory nie są zmienne. Zmienne nie są identyfikatorami. Wymaga to użycia "dynamicznego SQL" - jest to niebezpieczne we wszystkich bazach danych, z którymi pracowałem. –
Zobacz http://stackoverflow.com/questions/190776/how-to-have-dynamic-sql-in-mysql-stored-procedure i http://stackoverflow.com/questions/929244/mysql-create-table- with-dynamic-database-name-name i http://stackoverflow.com/questions/5530755/mysql-variables-storing-database-name –