テーブルが作成され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.11
DBの新規作成に伴い実行する任意のSQLを受け付けてロールチェンジします。コードは月曜日までに開発リポジトリにヒットする予定です。