除触发器外,阻止更新列

时间:2015-06-20 10:52:15

标签: postgresql triggers permissions

是否可以配置Postgres数据库,使得特定列只能由触发器更新,同时仍允许执行触发器本身以响应角色的更新而无需更新该列的权限?如果是这样,怎么样?

例如,给定的表和这样的触发器:

a.flag

我想定义一个角色,有权使用UPDATE语句直接更新flag,但可能 通过触发器间接更新import javax.swing.*; import java.awt.*; public class Taschenrechner extends JFrame{ //Instanzvariablen im Zusamenhang mit dem Menu private JMenuBar MenuBar; private JMenu MenuHelp; private JMenuItem MenuHelpQuit; public Taschenrechner() { super(); //Flaeche festlegen this.setSize(300,300); //Menukomponenten definieren MenuHelp= new JMenu("Help"); MenuHelpQuit=new JMenuItem("Quit"); //Menukomponenten zusammensetzen MenuHelp.add(MenuHelpQuit); MenuBar.add(MenuHelp); this.setJMenuBar(MenuBar); } }

1 个答案:

答案 0 :(得分:5)

是的,可以使用flag触发功能。触发器功能作为一个角色运行,有权修改GRANT列,但您没有GRANT对普通用户的权利。您应该将触发器功能创建为您将授予所需权限的角色。

这要求应用程序不以拥有表的用户身份运行,当然也不是超级用户。

您可以flag向用户提供对其他列的列更新权限,只需忽略GRANT列即可。请注意,所有列上UPDATE REVOKE flag UIPickerView UIPickerView

>