You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SurrealDB自引用关系权限限制失效:RELATE语句未被拦截

问题解答

你的判断是对的——RELATE操作并不触发关系表的CREATE权限规则,这就是自环RELATE能成功执行的原因。

在SurrealDB中,针对关系表的操作分为两种独立的事件类型:

  • CREATE:对应直接用CREATE edge:...语句创建关系的操作
  • RELATE:对应专门的RELATE语句创建关系的操作

你之前定义的权限规则只针对create事件,自然不会拦截RELATE语句。

修正后的代码

把权限规则中的FOR create改为FOR relate,就能拦截自环的RELATE操作:

DEFINE TABLE node SCHEMAFULL TYPE NORMAL;

DEFINE TABLE edge SCHEMAFULL TYPE RELATION IN node TO node
PERMISSIONS
    FOR relate
        WHERE in != out;

CREATE node:foo;
RELATE node:foo->edge->node:foo; -- 此操作现在会被禁止

额外说明

如果需要同时限制两种创建关系的方式(直接CREATE和RELATE),可以同时定义两种事件的权限规则:

DEFINE TABLE edge SCHEMAFULL TYPE RELATION IN node TO node
PERMISSIONS
    FOR create
        WHERE in != out,
    FOR relate
        WHERE in != out;

内容的提问来源于stack exchange,提问作者Athan Clark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 04:44:52