我想制作一个触发器,当疫苗超过其有效期('EXPIRATION_DATE')时,可以将字段('STATUS')更新为非活动状态。 这是当前的表结构:
**CREATE TABLE WAREHOUSE.VACCINE_INVENTORY (
VACCINE VARCHAR2(200 BYTE) NOT NULL,
RECEIPT_DATE DATE NOT NULL,
CONTAINER_SIZE VARCHAR2(200 BYTE),
QUANTITY NUMBER(6, 0),
REQUISITION NUMBER(6, 0),
FISCAL_YEAR NUMBER(4, 0),
RECEIVED_BY VARCHAR2(50 BYTE),
EXPIRATION_DATE DATE,
LOT_NUMBER VARCHAR2(30 BYTE) NOT NULL,
VENDOR VARCHAR2(200 BYTE),
STATUS VARCHAR2(10 BYTE),
CATALOG_NUMBER NUMBER(5, 0),
CONSTRAINT PK_VACC PRIMARY KEY (VACCINE, RECEIPT_DATE, LOT_NUMBER) USING INDEX TABLESPACE WAREHOUSE STORAGE**
所以我的想法是,如果SYSDATE> EXPIRATION_DATE到期日期应从Active更改为Inactive。
我认为我需要创建一个循环,这样当触发器运行时,它将循环遍历表中的所有记录,并将每个过期的疫苗设置为非活动状态。
我非常感谢任何帮助...
谢谢, 马修
答案 0 :(得分:1)
创建一个附加视图以提供依赖于表列和sysdate的字段,例如
CREATE TABLE VACCINE_INVENTORY(VACCINE VARCHAR2(200 BYTE) NOT NULL,
-- ---
EXPIRATION_DATE DATE NOT NULL
-- ...
);
CREATE view VACCINE_INVENTORY_VW AS
select v.*,
case
when v.expiration_date < sysdate then
'I'
else
'A'
end as status
from VACCINE_INVENTORY v;