Function 使用将另一列数据作为输入的函数更改列数据
这是我的问题。我有一个包含多个列的表。我不得不将其匿名化(使用专用工具,我不会详细说明)。现在,问题是我有一列,比如说B,它直接依赖于另一列,比如说a。我加密了a,所以我需要重新计算整个B列,比如B中的所有B,a中的所有B 示例:假设我使用下表Function 使用将另一列数据作为输入的函数更改列数据,function,plsql,calculated-columns,Function,Plsql,Calculated Columns,这是我的问题。我有一个包含多个列的表。我不得不将其匿名化(使用专用工具,我不会详细说明)。现在,问题是我有一列,比如说B,它直接依赖于另一列,比如说a。我加密了a,所以我需要重新计算整个B列,比如B中的所有B,a中的所有B 示例:假设我使用下表 A | B ------- 2 | 3 14 | 2 6 | 1 22 | 9 10 | 13 列A的所有值都已加密,但B保持不变。现在我需要应用,例如,这个函数 create or replace function correct_
A | B
-------
2 | 3
14 | 2
6 | 1
22 | 9
10 | 13
列A的所有值都已加密,但B保持不变。现在我需要应用,例如,这个函数
create or replace function correct_b_column(input number) return number is
begin
return input * input
end
对整个B列进行加密,以确保对于a中的所有a,B中的B,即使在对a列进行加密后,我仍然有B=a²
如何实现这一点?您没有指出您拥有的Oracle版本,但假设11gR1或更高版本,最好的方法就是将列B创建为 如果B的推导很复杂,那么可以使用函数
这保证了B总是以A的形式设置。请参阅
create table vir_col_b ( a integer
, b integer generated always as ( a*a) );