我正在编写一个网站,客户现在想要不同的角色(比规范中指定的角色更多)。所以现在我必须向每个用户展示更少的内容。
例如,如果某人是数据输入用户,他也可以查看私人项目。
因此,在我的表 PROJECTS 中,我有一个名为 STATE 的属性,其中显示了项目的状态。
如果是:
- 待审批,
- 存档,
- 删除,
- 上市,
- 私人的
在我的代码中,我有很多 SQL 查询SELECT * FROM PROJECT LIKE 'smth'
或SELECT * FROM PROJECT WHERE COUNTRY=smth
很多其他需要返回项目的查询。
所以我想要的是表 PROJECT 上的计算值,它将根据当前登录的 USER对表的每一行返回 true 或 false 。
所以我可以打电话SELECT * FROM PROJECT LIKE 'smth' AND computed_attr = TRUE
给我的每一个查询。
问题是我只知道sql上的SCALAR_FUNCTIONS,你只能在当前表上使用参数。
当用户登录并且必须运行查询时,我希望将此 USER_ROLE_ID 作为参数,以便函数可以选择显示或不显示表的当前行。
SELECT *
FROM PROJECT
LIKE 'smth' AND scalarFunction(USER_ROLE_ID) = TRUE