我想阻止用户(所有人)更新主题的特定列以防止循环依赖。PostgreSQL阻止更新列每个人
CREATE TABLE Topic(
id serial NOT NULL PRIMARY KEY,
contenxt text DEFAULT NULL, -- can be freely updated
Dependency1 serial REFERENCES Topic(id) ON DELETE RESTRICT, -- CAN'T be updated
Dependency2 serial REFERENCES Topic(id) ON DELETE RESTRICT, -- CAN'T be updated
);
DENY UPDATE ON Topic(Dependency1) TO *; -- Here
DENY UPDATE ON Topic(Dependency2) TO *;
但尝试了几个变体后,它似乎总是报告一些语法错误。解决这个问题开始很无聊。可选的解决方案是受欢迎的,但我认为这个解决方案相当简单(因为你知道u.u的确切语法)。
在评论中提出了一个触发器,但我不知道如何通过触发器来实现。
触发器怎么样?有了它,你可以防止超级用户的更新。 – 2015-02-09 17:05:00
主题表具有可更新的其他字段(“内容”为文本),因此触发器应只保留对“依赖性”字段进行的更改。如果不可能,只要告诉我将“内容”移动到另一个表格。这只是我从来没有使用过触发器,所以我不知道从哪里开始 – GameDeveloper 2015-02-09 17:21:02
查看答案。在postgresql中,你可以在列上使用触发器。只有当价值真的不同时,你才可以用它来提高信息。如果需要.. – 2015-02-09 17:24:20