我想在postgres表中记录动态规则。
例如:
Tstudents
,其中包含以下列:Cid:serial Cname:varchar, Cmajor:varchar, CGPAGrades:float, Ccreditscompleted:integer, CthesisScore
。Trules
的表格,其中包含以下列:Cmajor:Varchar, CSomeRules:Varchar.
如果学生是工程的专业,我会评估以下规则CSomeRules,可能会说:creditcompleted>40, CGPAGrades>3.5, thesisScore>8
Trules
规则是动态的,因为creditcompleted>40, CGPAGrades>3.5, thesisScore>8
可以在下学期成为以下内容:creditcompleted>40, CGPAGrades>3.5
我们删除了其中一项要求。或creditcompleted * CGPAGrades > somevalue
规则可能会经常更改,这就是为什么如果可能在表上记录规则,任何事都不应该硬编码。也许我需要的是类似于javascript eval
概念。
我如何在postgres中做到这一点?
答案 0 :(得分:0)
使用规则编写SQL语句并针对数据库运行它。
您可以使用EXECUTE 'command string'
在客户端代码或PL / pgSQL函数中执行此操作。
确保您可以信任规则来源的来源,因为如果您从用户输入动态构造SQL语句,则存在SQL注入攻击的风险。