pl/sql中是否有BEFORE SELECT触发器?

gee*_*n92 2 sql oracle triggers plsql

您好我使用sqldeveloper连接到oracle数据库.

我的senario是我的数据库中有一个客户表,start_date其中包含一个日期字段,该字段包含用户注册日期和调用的"布尔"字段is_member.每个会员资格仅持续一年,is_member如果是,则为假SYSDATE > start_date + 1year.

我想is_member在用户调用select语句之前检查用户是否仍然是成员(如果没有则更改).这可能吗?

如果没有人有任何关于如何保持该is_member领域最新的想法?你可以做一个每天调用一次的触发器来查看会员资格是否已经过期?

谢谢你的推荐!=]

Vin*_*rat 5

不要使用表列来存储依赖数据,使用视图:

CREATE OR REPLACE VIEW customer_v AS
SELECT c.*, 
       CASE WHEN SYSDATE > add_months(c.start_date, 12) 
          THEN 'FALSE' 
          ELSE 'TRUE' 
       END is_member
  FROM customer c
Run Code Online (Sandbox Code Playgroud)

is_member视图的列将始终包含了最新的数据.

  • 我会存储结束日期和开始日期.他们续订时更新结束日期. (2认同)