栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

有没有办法禁用更新/删除但仍然允许触发器执行它们?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有没有办法禁用更新/删除但仍然允许触发器执行它们?

是的,这是可能的。

触发器以触发器函数的权限运行,默认为SECURITY INVOKERwhich 意味着,触发器函数以 的权限有效执行current_user,在您的情况下是插入行的权限。

如果当前用户没有您的触发器函数操作的表所需的权限,您在基础表中的原始操作将出错。

但是,您可以使用SECURITY DEFINER触发器函数来让该函数以该函数的权限运行OWNER。

如果你有一个拥有触发器功能的超级用户,它可以做任何事情——这可能是一个安全隐患。请考虑手册中有关安全编写SECURITY DEFINER函数的说明。

但更明智的做法OWNER是使用触发器函数的必要权限创建一个普通角色。您甚至可以在没有登录的情况下创建一个“守护进程”角色,充当此类操作的特权包。然后,您将仅授予此守护程序角色所需的权限(在模式、表、序列上……)。对于更复杂的设计,您应该在“组角色”中捆绑特权(同样,没有登录)并将这些组角色授予需要它的角色(在本例中为守护程序角色),有效地使他们成为“组的成员”。我经常这样做。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431509.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号