当前位置:  开发笔记 > 数据库 > 正文

在视图上执行触发器?

如何解决《在视图上执行触发器?》经验,为你挑选了2个好方法。

我不太熟悉数据库触发器和/或视图.我目前正在使用PostgreSQL和HSQL; 虽然数据库不是太重要.我只是想知道是否有任何数据库提供这样的东西:

我有一个这样的(示例)表:

CREATE TABLE DUMMY_TABLE (ID INTEGER, NUMBER INTEGER);

我创建了一个这样的视图:

CREATE VIEW DUMMY_VIEW AS SELECT * FROM DUMMY_TABLE WHERE NUMBER > 5;

我插入了几个实体:

INSERT INTO DUMMY_TABLE VALUES(1,2);
INSERT INTO DUMMY_TABLE VALUES(1,10);

因此,当我打电话时,DUMMY_VIEW只包含VALUES(1,10)

SELECT * FROM DUMMY_VIEW

所以现在我要做的是为DUMMY_VIEW添加一个触发器,只要插入NUMBER> 5的实体,就会调用该触发器.

我曾尝试将触发器直接添加到HSQL和PostgreSQL中的DUMMY_VIEW; 但他们说触发器无法添加到视图中.

这是(或功能相似的解决方案)可能吗?



1> ocharles..:

应该注意的是PostgreSQL 9.1+支持视图上的触发器.请参阅等待9.1 - 视图上的触发器以简要了解此情况.


视图上的触发器代替触发器,仅用于创建可更新的视图。他们不会从问题中解决问题,因为他们没有在听基础表的更改

2> bogertron..:

是的,触发器不能直接放在视图上.您应该做的是在基表上放置一个触发器,并检查新NUMBER行是否具有大于5的值.

注意:视图只是一个存储的select语句,因此它并不真正保存数据.这就是为什么人们无法检查是否在视图结构中插入,删除或更新数据的原因.


从postgresql 9.1开始,您可以在视图上使用触发器.
推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有