我有兴趣创建一个在创建表时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
随着新数据库的创建,将滚动更改以接受任意 SQL 执行。预计代码将在周一之前到达开发仓库。