Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql създава динамично таблица

За да накарате низ да представлява име на таблица (или база данни), ще трябва да свържете низа на вашата заявка с променливата и да подготвите/изпълните оператор направо в съхранената процедура. Ето един основен пример.

-- DROP PROCEDURE IF EXISTS createLogTable;
DELIMITER //
CREATE PROCEDURE createLogTable(tblName VARCHAR(255))
BEGIN
    SET @tableName = tblName;
    SET @q = CONCAT('
        CREATE TABLE IF NOT EXISTS `' , @tableName, '` (
            `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
            `something` VARCHAR(10) NOT NULL,
            `somedate` DATETIME NOT NULL,
            PRIMARY KEY (`id`)
        ) ENGINE=MyISAM DEFAULT CHARSET=utf8
    ');
    PREPARE stmt FROM @q;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
    -- and you're done. Table is created.
    -- process it here if you like (INSERT etc)
END //

След това... CALL createLogTable('exampleTable');

Така че основната идея е

  1. свържете параметъра(ите) на процедурата с вашата заявка, ако е необходимо
  2. подгответе/изпълнете оператор от този низ на заявка



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql SELECT най-доброто от всяка категория в една таблица

  2. Как да съхранявате масиви в MySQL?

  3. Средната дължина на реда е по-висока от възможната

  4. как да сравним дата и час в php/mysql

  5. Възможно инжектиране от низ от дати Изберете заявка