限制用户可以在关系数据库中编辑哪些行

时间:2020-04-08 17:35:42

标签: sql node.js postgresql express

我已经建立了一个Postgresql数据库,其中包含用户,业务,活动和凭证表

每个优惠券都有一个父广告系列,每个广告系列都有一个母公司,每个用户可以属于通过business_user FK表链接的一个或多个公司。

如何停止用户更改不属于其所属业务的行? 我使用jwts来管理会话,并且它们存储了userId。

我是否使用内部联接?但是,我该如何处理多对多业务和用户关系呢?

1 个答案:

答案 0 :(得分:0)

为了展示该技术,我需要引用各列,因此我做出以下假设:

  • 每个表都有一个列ID,并且此列定义为PK。
  • 每个表具有适当的外键列和名称,如下所示: RefTable _id
  • 每个表都有一个非键列COL。

然后,该技术将应用于(并存在select ...),其中select遵循FK链从要更新的表到business_user到企业。因此,更新凭证变为:

update voucher vch 
   set col = '...'
 where vch.id = &vid
   and exists
       ( select null 
           from campaign camp 
           join business bus  on bus.id = camp.business_id
           join business_user bu on bu.business_id = bus.id
          where camp.id = vch.campaign_id
            and bu.user_id = &uid
       );  

其中&vid和&uid分别用于vouhcer.id和user.id。