我有表“权限”
| user_id | object_id | readable | writable |
我需要通过以下规则确定当前user_id是否可以访问给定的object_id :
- 如果object_id根本没有记录,则返回 true
- 如果object_id有记录但user_id不同,而给定user_id没有记录,则返回 false
- 如果给定user_id和object_id有记录,则再次检查提供的可读和可写条件
我不确定是否可以构建不涉及嵌套查询的 SQL 查询,现在我提出了
select (
select count(*)
from permission
where
object_id = 123456
) == 0 OR (
select readable=true, writable=false
from permission
where user_id=1 and object_id=123456
)
有没有更优雅的解决方案?
谢谢!