问题
我经常看到上面写着rules should be avoided and triggers used instead.我可以看到规则系统中的危险,但规则当然也有合法的用途,对吗?他们是什么?
我问这个是出于普遍的兴趣,我对数据库不是很熟悉.
可能是有效使用的示例
例如,过go 我需要锁定某些数据,所以我做了这样的事情:
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;
我同意这是黑客行为,但在这种情况下,我无法更改访问数据库的应用程序(甚至无法抛出错误).所以bonus points是为了找出a dangerous/invalid use of the rule system的原因,而not是为了找出bad design的原因.