Postgresql 禁止在postgres中插入时返回

Postgresql 禁止在postgres中插入时返回,postgresql,Postgresql,postgres可以使用RETURNING子句返回插入的主键。是否可以禁用该功能?我的意思是,如果有人试图使用RETURNING获取插入的ID,它将不返回任何内容。(作为常用插入语) ?我认为INSERT命令不能做到这一点 一些备选方案: 撤销用户的插入并创建一个具有“安全定义器”的函数,该函数执行插入操作,或 使用列级权限:此处是来自INSERT命令的文档: 使用RETURNING子句需要对RETURNING中提到的所有列具有SELECT权限。如果使用query子句插入查询中的行,当然需要对

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

我认为INSERT命令不能做到这一点

一些备选方案:

  • 撤销用户的插入并创建一个具有“安全定义器”的函数,该函数执行插入操作,或
  • 使用列级权限:此处是来自INSERT命令的文档: 使用RETURNING子句需要对RETURNING中提到的所有列具有SELECT权限。如果使用query子句插入查询中的行,当然需要对查询中使用的任何表或列具有SELECT权限

更新: 使用列级权限至少可以执行两项操作:

  • 撤销选择列:从testuser撤销表testtable上的选择(受限列1,…)
  • 撤销插入列:从testuser撤销表testtable上的插入(受限列1,…)。在这种情况下,受限的_col1必须具有默认值或不具有NOT NULL约束

我无法回答您的问题,但我怀疑它没有该功能。不管怎样,你的设计可能是弄错了方向-也许可以考虑编写一个数据库函数来进行插入,或者只编写一点中间件来安全地保护你的数据库不受用户的攻击。请不要破坏你的帖子。正确:你选择了适当的撤销。