我有兴趣创建一个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
的命令,但是让它复制触发器?
P.S。
联系开发将使用3.0.7.11
进行滚动更改以接受任意SQL以及创建新数据库。预计代码将在周一之前达到dev repo。
答案 0 :(得分:4)
您无法在information_schema
数据库中的表上设置触发器。
你能提供一个引文吗? - mbrownnyc
http://dev.mysql.com/doc/refman/5.1/en/information-schema.html
MySQL 5.1参考手册
第20章INFORMATION_SCHEMA表
INFORMATION_SCHEMA数据库的使用说明
INFORMATION_SCHEMA是每个MySQL实例中的数据库,该实例存储有关MySQL服务器维护的所有其他数据库的信息。 INFORMATION_SCHEMA数据库包含几个只读表。它们实际上是视图,而不是基表,因此没有与它们相关联的文件,您无法在它们上设置触发器。