- April 10, 2008 4:45 PM
Q.
トリガーなどで、あるテーブルにデータが挿入されたタイミングで、挿入されたデータと同じ名前のテーブルを、簡単に作成することが出来るか。
A.
できない。
1.「挿入されたデータを使って、」のように動的なSQLはトリガーではサポートしていない。
2.トリガーでは、CREATE TABLEのような、内部でCOMMITするステートメントを記述できない。
内部でCOMMITを発行するステートメントのリストは、ここ。
http://dev.mysql.com/doc/refman/5.1/en/implicit-commit.html
トリガーやストアドルーチンの制限は、ここ。
http://dev.mysql.com/doc/refman/5.0/en/routine-restrictions.html
http://dev.mysql.com/doc/refman/5.0/en/using-triggers.html
やりたいことは、プロシージャを使えばできそう。
CREATE PROCEDURE tset_proc(IN tableName varchar(64), IN nantokaData INT) BEGIN
INSERT INTO tableA VALUES (tableName, someData);
SET @sql := CONCAT('CREATE TABLE ', tableName, ' ( fieldName INT)');
PREPARE myStatement FROM @sql;
EXECUTE myStatement;
END
- Newer: MySQL Cluster Tutorialメモ
- Older: MySQL Clusterチューニングメモ(まだ途中)