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. フィールドに1を追加します

    2. PostgreSQLデータベースにすべてのストアドプロシージャを一覧表示する3つの方法

    3. rewriteBatchedStatements=trueを使用したMySQLおよびJDBC

    4. Oracle Merge vs Select、次に挿入または更新