RDBM动态表结构

时间:2018-02-08 01:32:32

标签: database rdbms

我正在尝试创建一个动态表。

ID  |TABLE_NAME    | COLUMN_NAME| VALUE | CRITERIA_COLUMN | CRITERIA_VALUE
------------------------------------------------------------------------------
1   |PRODUCT_LIST  | HANDLE_FEE |  5    |  COUNTRY        |  AUSTRALIA

这表明需要更新哪一列。 此数据转换为

UPDATE PRODUCT_LIST
SET HANDLE_FEE = 5
WHERE COUNTRY = 'AUSTRALIA'

但是如果我想添加更多标准,比如

UPDATE PRODUCT_LIST
SET HANDLE_FEE = 5
WHERE COUNTRY = 'AUSTRALIA'
AND STATE = 'WA'

如何更改动态表以实现此更新语句?

1 个答案:

答案 0 :(得分:0)

在关系理论和SQL dbms中,这个“动态”表有一个特殊的名称。它被称为“桌子”。

使用这样的表不会“记录所有更新历史记录”。它只会记录使用前端应用程序的任何更新语句的部分内容。

假设通过更新历史记录,您的意思是所有插入,更新和删除语句,这些只能通过审核或记录来完成。

例如,您可以通过在postgresql.conf文件中设置log_statement = mod来配置PostgreSQL以记录所有insert,update和delete语句(以及其他一些语句)。您可以为change data capture or change tracking配置SQL Server。 SQL Server还支持C2 audit mode(已弃用)和common criteria compliance

如果你必须走上你似乎为你的雇主设定的道路 - 这是一个非常非常糟糕的想法 - 你会把WHERE子句的部分移动到另一个表,设置外键引用“your_table_name”,并假定WHERE子句中的所有相关行应进行AND运算。但后来有时需要使用OR。并且稍后再次容纳任意数量和级别的嵌套parens。并且稍后再次提出您需要支持更多运算符而不仅仅是=。再来一次。 。