为什么 Oracle Fusion EBS 在其数据库表中同时使用 ENABLED_FLAG 和 START_DATE_ACTIVE/END_DATE_ACTIVE?
Why does Oracle Fusion EBS use both ENABLED_FLAG and START_DATE_ACTIVE/END_DATE_ACTIVE in its database tables?
许多 Oracle EBS table 包括 ENABLED_FLAG
、START_DATE_ACTIVE
和 END_DATE_ACTIVE
列,用于确定该行在是否申请。
例如,要从 FND_LOOKUP
table 中获取当前查找代码的列表,我会 运行 以下 SQL 查询
select lookup_code
from fnd_lookups fl
where and fl.enabled_flag = 'Y' and sysdate between nvl(fl.start_date_active,sysdate) and nvl(fl.end_date_active,sysdate)
我的问题是,既然 START_DATE_ACTIVE
和 END_DATE_ACTIVE
似乎足以确定该行是否应该在应用程序中可用,为什么会有 ENABLED_FLAG
? ENABLED_FLAG
还有其他我没看到的用途吗?
正如马修提到的——这主要是历史性的。 table 例如 FND_LOOKUPS 在代码中被引用了数千次。因此,没有简单的方法来更改现有的语义——您只能添加新的语义。
从好的方面来说,您只需要在允许选择值时执行此操作,而不是在加入时执行此操作...
许多 Oracle EBS table 包括 ENABLED_FLAG
、START_DATE_ACTIVE
和 END_DATE_ACTIVE
列,用于确定该行在是否申请。
例如,要从 FND_LOOKUP
table 中获取当前查找代码的列表,我会 运行 以下 SQL 查询
select lookup_code
from fnd_lookups fl
where and fl.enabled_flag = 'Y' and sysdate between nvl(fl.start_date_active,sysdate) and nvl(fl.end_date_active,sysdate)
我的问题是,既然 START_DATE_ACTIVE
和 END_DATE_ACTIVE
似乎足以确定该行是否应该在应用程序中可用,为什么会有 ENABLED_FLAG
? ENABLED_FLAG
还有其他我没看到的用途吗?
正如马修提到的——这主要是历史性的。 table 例如 FND_LOOKUPS 在代码中被引用了数千次。因此,没有简单的方法来更改现有的语义——您只能添加新的语义。
从好的方面来说,您只需要在允许选择值时执行此操作,而不是在加入时执行此操作...