【发布时间】:2015-06-10 22:28:56
【问题描述】:
我有三个表用户、办公室和角色映射。用户 ID 将是针对办公室经理和办公室负责人的办公室表的 FK。角色和用户 ID 将映射到角色映射表中,如下所示。 删除办公室时,办公室表的活动列将更新为“N”。 当一个办公室被删除时,我必须检查办公室经理是否作为任何其他办公室的办公室经理出现。 (同一个人也可以是另一个市场的经理) 如果他不是,那么我必须通过将 Active 标志更新为“N”来删除角色映射表中的条目
表用户
User ID | User Name |
--------------------------
1 | Mark |
2 | George |
3 | Rick |
4 | Alex |
办公桌
Office ID | Office Name | Office Manager| Office Head | Active |
---------------------------------------------------------------------------
1 | Off1 | 1 | 2 | Y |
2 | Off2 | 1 | 4 | Y |
角色映射
User ID | User Role | Active |
---------------------------------------------
1 | Office Manager | Y |
2 | Office Head | Y |
4 | Office Head | Y |
所以在这个例子中,如果我删除 Office 2,那么我需要将角色映射表中的第三个条目更新为以下内容 办公室经理角色映射将保持不变,因为同一用户也是 Off1 的经理。
角色图——更新后
User ID | User Role | Active |
-------------------------------------------
1 | Office Manager | Y |
2 | Office Head | Y |
4 | Office Head | N |
我不确定如何在 pl/sql 中实现这个查询。有人可以在这里指导我吗?
【问题讨论】:
-
我认为 MERGE 在这里不会有用。我会创建一个触发器以避免每次删除后手动更新。