Postgres动态评估

时间:2017-05-15 13:21:21

标签: sql postgresql dynamic evaluation

我想在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

  1. 我们在表Trules
  2. 中记录规则
  3. 规则是动态的,因为creditcompleted>40, CGPAGrades>3.5, thesisScore>8可以在下学期成为以下内容:creditcompleted>40, CGPAGrades>3.5我们删除了其中一项要求。或creditcompleted * CGPAGrades > somevalue

  4. 规则可能会经常更改,这就是为什么如果可能在表上记录规则,任何事都不应该硬编码。也许我需要的是类似于javascript eval概念。

  5. 我如何在postgres中做到这一点?

1 个答案:

答案 0 :(得分:0)

使用规则编写SQL语句并针对数据库运行它。

您可以使用EXECUTE 'command string'在客户端代码或PL / pgSQL函数中执行此操作。

确保您可以信任规则来源的来源,因为如果您从用户输入动态构造SQL语句,则存在SQL注入攻击的风险。