【问题标题】:Postgres dynamic evaluationPostgres动态评估
【发布时间】:2017-10-14 07:28:15
【问题描述】:

我想在 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. 规则是动态的,因为creditcompleted>40, CGPAGrades>3.5, thesisScore>8 可以在下学期变成以下内容:creditcompleted>40, CGPAGrades>3.5 我们放弃了其中一项要求。或creditcompleted * CGPAGrades > somevalue

  3. 规则可能经常更改,这就是为什么如果可以将规则记录在表上,则不应硬编码。也许我需要的是类似于 javascript eval 概念的东西。

如何在 postgres 中做到这一点?

【问题讨论】:

    标签: sql postgresql dynamic evaluation


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多