在postgres中禁用INSERT上的RETURNING

时间:2017-10-12 16:52:37

标签: postgresql

postgres可以使用RETURNING子句返回插入的主键。是否可以禁用该功能?我的意思是,如果有人试图使用RETURNING获取插入的ID,则不会返回任何内容。 (作为常见INSERT) ?

1 个答案:

答案 0 :(得分:1)

我认为INSERT命令不能这样做。

一些替代方案:

  • 从用户撤销插入并使用“安全定义器”创建一个执行INSERT的功能,或者
  • 使用列级权限:这里是INSERT命令的文档:
      

    使用RETURNING子句需要对RETURNING中提到的所有列具有SELECT权限。如果使用query子句从查询中插入行,则当然需要对查询中使用的任何表或列具有SELECT权限。

<强>更新: 使用列级权限至少执行两项操作:

  • 撤销选择列:REVOKE SELECT(restricted_col1,...)ON TABLE testtable FROM testuser
  • 撤销插入列:REVOKE INSERT(restricted_col1,...)ON test testtable FROM testuser。在这种情况下,restricted_col1必须具有DEFAULT值或必须具有NOT NULL约束。