【发布时间】:2011-08-19 03:28:52
【问题描述】:
问题
我经常看到它说rules should be avoided and triggers used instead。我可以看到规则系统的危险,但规则肯定有有效的用途,对吧?它们是什么?
我问这个是出于普遍的兴趣;我对数据库不是很熟悉。
可能是有效用途的示例
例如,过去我需要锁定某些数据,所以我做了这样的事情:
CREATE OR REPLACE RULE protect_data AS
ON UPDATE TO exampletable -- another similar rule for DELETE
WHERE OLD.type = 'protected'
DO INSTEAD NOTHING;
那么如果我想编辑受保护的数据:
START TRANSACTION;
ALTER TABLE exampletable DISABLE RULE protect_data;
-- edit data as I like
ALTER TABLE exampletable ENABLE RULE protect_data;
COMMIT;
我同意这是 hacky,但在这种情况下,我无法更改访问数据库的应用程序(甚至无法对其抛出错误)。所以 奖励积分 可以找到原因对规则系统的危险/无效使用,但不是糟糕的设计。
【问题讨论】:
-
无效使用。应该用触发器来完成。
标签: database postgresql triggers rules