我正在编写一个网站,客户现在需要不同的角色(比规范中指定的角色多)。所以现在我必须向每个用户显示更少。
例如,如果有人数据输入用户,他也可以看到私人项目。
因此,对于我的表PROJECTS,我有一个名为STATE的属性,用于显示项目的状态。
如果是:
在我的代码中,我有很多SQL查询SELECT * FROM PROJECT LIKE 'smth'
或SELECT * FROM PROJECT WHERE COUNTRY=smth
以及许多需要返回项目的其他查询。
所以我想要的是表PROJECT上的计算值,它会根据当前登录的用户向表的每一行返回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