我在postgreSQL中启动了一个新项目(最近一次),已经使用了MySQL 5.5一段时间。
在过去,我经常使用blackhole表来简化我的应用程序代码。
它允许我在应用程序代码中进行一次插入:
INSERT INTO blackhole1 (val1, val2, val3, val4 ...
CREATE TRIGGER ai_blackhole1_each AFTER INSERT ....
BEGIN
INSERT INTO table1 (....
INSERT INTO table2 (....
INSERT INTO log (.....并在黑洞表中有一个触发器,将值插入到不同的表中。
我在postgreSQL中使用什么来替换这个功能?
我知道我可以使用存储过程,但这意味着我不能将数据感知控件连接到
黑洞桌子。因此,我会喜欢的棍子尽可能接近MySQL原版。
发布于 2011-10-13 21:21:47
使用PostgreSQL 9.1,您可以像使用MySQL一样使用创建触发器。请注意,不可能在9.1之前的版本中为视图创建触发器。
您是在MySQL中为您的黑洞表使用存储引擎黑洞,还是仅仅是一个名称?PostgreSQL中没有可插拔的存储引擎,但您可以获得与MySQL中的存储引擎黑洞相同的行为,而不是PostgreSQL视图上的触发器。我不太明白您对于数据感知控件的看法: afaik --在黑洞表(存储引擎)中没有任何数据感知,但另一方面,您当然可以将hibernate实体映射到数据库视图。
使用触发器简化应用程序代码是一个好主意还是坏主意,取决于实际的用例。例如,对于日志记录和审计,我更喜欢触发器而不是应用程序逻辑,因为这种方法为连接到数据库的不同应用程序以及管理员的临时查询/语句提供了单一的解决方案。但根据我的经验,触发器不会消除复杂性,而只是将其转移到数据库层。这通常会使多层应用程序更难扩展和维护。
https://stackoverflow.com/questions/7751375
复制相似问题