3

テーブルが作成されTRIGGERたときに を作成する を作成することに興味があります。TRIGGER

mysql データベースを調べてみると、スキーマのテーブルが次のように返されることに気付きました。

select TABLE_NAME, TABLE_SCHEMA from information_schema.TABLES;

を作成する次の方法は、別のスキーマへのバインドをTRIGGER作成する適切な方法ですか?TRIGGER

DELIMITER //
CREATE TRIGGER `information_schema`.`argus_table_creation`
    AFTER INSERT on `TABLES`
    BEGIN
        --trigger here
        CREATE TRIGGER `argus`.`after_argus_insert` --create trigger bound to DB 'argus', titled 'after_insert'
        AFTER INSERT ON `argus_table_2013_06_27` FOR EACH ROW -- perform the trigger, `after insert`, on the `argus_table_2013_06_27` table, `for each row` that is inserted.
        BEGIN
                INSERT INTO argus.historic_argus_saddrdaddr(saddr, daddr)
                (
                SELECT saddr, daddr
                FROM (SELECT NEW.saddr, NEW.daddr) as derived
                WHERE NOT EXISTS (SELECT saddr, daddr FROM argus.historic_argus_saddrdaddr where historic_argus_saddrdaddr.saddr = derived.saddr and historic_argus_saddrdaddr.daddr = derived.daddr)
                );
        END//
    END//
DELIMITER;

理由:

特定の命名スキームに一致する新しいテーブルを自動的に作成するクライアント アプリケーション ( rasqlinsert ) を使用します (strftime(f) を利用できます)。これらの自動生成されたテーブルが生成されたときに、それらにトリガーを作成する必要があります。これが私が解決策を探している理由です。

別の可能な解決策

ソフトウェアの開発者に と同様のコマンドを使用するようにアドバイスすることはできCREATE TABLE n LIKE xますか?ただし、トリガーをコピーしますか?

PS連絡先開発者。3.0.7.11DBの新規作成に伴い実行する任意のSQLを受け付けてロールチェンジします。コードは月曜日までに開発リポジトリにヒットする予定です。

4

1 に答える 1