向我的 H2 数据库中的每个表添加触发器

Posted

技术标签:

【中文标题】向我的 H2 数据库中的每个表添加触发器【英文标题】:add trigger to every table in my H2 database 【发布时间】:2015-05-17 13:29:31 【问题描述】:

我试图为我的 h2 数据库中的每个数据库表添加一个触发器,但我不知道该怎么做。

我可以选择数据库中的所有表,但是如何循环遍历它们以对每个表应用触发器,如下所示?

SELECT * FROM INFORMATION_SCHEMA.TABLES

循环遍历每一个并为每一个应用触发器

CREATE TRIGGER MYTRIGGER AFTER INSERT ON TableName FOR EACH ROW      CALL\"test.h2Trigger\"

【问题讨论】:

【参考方案1】:

您可以尝试创建一个存储过程,在其中打开一个游标以获取每个表名,并使用服务器端准备好的语句在每个表上创建触发器。请参阅http://forums.mysql.com/read.php?60,27979,30437 了解如何使用准备好的语句。

如果你使用 Perl 或 php 脚本来做这件事会更容易。

为什么需要在每个表上创建触发器?

【讨论】:

我想在我的数据库中的表上记录活动,因此需要为每个表添加触发器...它是一个 h2 数据库,所以我认为它不允许存储过程? 即使被允许,它们仍然很贵。 是的,我知道,但这纯粹是本地环境的事情,不在生产中 h2 支持某种触发器。检查h2database.com/html/features.html#triggers。 如果我将它们应用到单个表,我的触发器就会工作,我面临的问题是想出一种方法来应用到我的数据库上的所有表......比如,选择所有表并对于每个应用触发器

以上是关于向我的 H2 数据库中的每个表添加触发器的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Server 2008 R2 中为每个表创建创建触发器

H2 - 如何创建将行更改记录到另一个表的数据库触发器?

尝试使用触发器以将行插入另一个表时出现语法错误

从 SQL 向 Azure 服务总线队列添加消息

如何为SQL Server数据库中的所有表创建触发器

如何创建触发器以将更改事件添加到审核日志表中