Home > トリガーの制限

トリガーの制限

  • 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

Home > トリガーの制限

Search
Feeds

Return to page top