【发布时间】:2016-01-15 13:49:32
【问题描述】:
我想创建一个触发器,当疫苗过期(“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。
我假设我需要创建一个循环,以便当触发器运行时,它将循环遍历表中的所有记录并将每个过期的疫苗设置为非活动状态。
我将不胜感激任何帮助......
谢谢, 马修
【问题讨论】:
-
这适用于哪个 RDBMS?请添加标签以指定您使用的是
mysql、postgresql、sql-server、oracle还是db2- 或完全其他的东西。 -
抱歉,这是针对 Oracle (Oracle 12c) 的。谢谢。
-
“触发器”是指每天运行的计划作业吗?如果是这样,则不需要循环;一条更新语句就可以完成这项工作。您只需将其放入 pl/sql 过程中,然后设置作业以调用该过程
-
感谢 Boneist:我最终使用了更新声明。谢谢。