Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql tworzy tabelę dynamicznie

Aby łańcuch reprezentował nazwę tabeli (lub bazy danych), musisz połączyć swój łańcuch zapytania ze zmienną i przygotować/wykonać instrukcję bezpośrednio w procedurze składowanej. Oto podstawowy przykład.

-- 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 //

Następnie… CALL createLogTable('exampleTable');

Więc podstawową ideą jest

  1. w razie potrzeby połącz parametry procedury z zapytaniem
  2. przygotuj/wykonaj instrukcję z tego ciągu zapytania



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Limit rozmiaru importu pliku w PHPMyAdmin

  2. Losowy ważony wybór wydarzenia

  3. Jak połączyć się z mysql WSL z hosta Windows

  4. Jak ta witryna naprawia kodowanie?

  5. Zapytanie SQL, wybierz tylko, jeśli kolumna nie jest pusta, w przeciwnym razie nie wybieraj