Sql 如何在Oracle中创建计算派生值的触发器

Sql 如何在Oracle中创建计算派生值的触发器,sql,oracle,Sql,Oracle,创建一个触发器,在将元组插入CompactInfo时计算duration列的值 ContractInfo Table HAS_CONTRACT DATE_FROM DATE_TO DURATION --------------------- --------- --------- ---------- Simon Palm 20-AUG-01 19-AUG-02 0 Simon Palm 20-SEP-02

创建一个触发器,在将元组插入CompactInfo时计算duration列的值

ContractInfo Table
HAS_CONTRACT          DATE_FROM DATE_TO     DURATION
--------------------- --------- --------- ----------
Simon Palm            20-AUG-01 19-AUG-02          0
Simon Palm            20-SEP-02 19-AUG-03          0
Flut                  10-JUN-99 09-SEP-02          0

我怎样才能扣动扳机?我对扳机有点困惑

我会用Oracle这样做:

CREATE OR REPLACE TRIGGER TRIG_ContractInfo
    BEFORE INSERT OR UPDATE ON ContractInfo REFERENCING
    NEW AS NEW
    OLD AS OLD
    FOR EACH ROW
DECLARE
BEGIN
  IF INSERTING THEN
    /* ON INSERT STATEMENTS */
  END IF;
  IF UPDATING THEN
    /* ON UPDATE STATEMENTS */
  END IF;
  /* COMMON STATEMENTS */
END;
/

这就是我如何使用Oracle的方法:

CREATE OR REPLACE TRIGGER TRIG_ContractInfo
    BEFORE INSERT OR UPDATE ON ContractInfo REFERENCING
    NEW AS NEW
    OLD AS OLD
    FOR EACH ROW
DECLARE
BEGIN
  IF INSERTING THEN
    /* ON INSERT STATEMENTS */
  END IF;
  IF UPDATING THEN
    /* ON UPDATE STATEMENTS */
  END IF;
  /* COMMON STATEMENTS */
END;
/

什么类型的SQL?触发器是特定于实现的。你有吗?这是用于哪个RBDM的?另外,我假设这是一个家庭作业,你必须符合这个要求。。。因为否则,计算列可能更有意义。什么类型的SQL?触发器是特定于实现的。你有吗?这是用于哪个RBDM的?另外,我假设这是一个家庭作业,你必须符合这个要求。。。因为否则,计算列可能更有意义。您能解释一下这个sql查询吗?谢谢你为什么需要引用条款?(我不知道为什么有人需要它,但它在这里似乎特别没有意义,因为你没有重命名任何东西)。@Ben:绝对没有意义,除非你告诉一个似乎对PL/SQL一无所知的人。所以在这里,我提出了我的触发器模板,我通常从需要编码的时候开始。这只是一个提示,告诉他如何继续,最简单的方法,以防他在甲骨文上。我可以看出这让你很沮丧,好吧,我理解,我给你一个小小的拥抱来帮助你睡得更好,亲爱的。你能解释一下这个sql查询吗?谢谢你为什么需要引用条款?(我不知道为什么有人需要它,但它在这里似乎特别没有意义,因为你没有重命名任何东西)。@Ben:绝对没有意义,除非你告诉一个似乎对PL/SQL一无所知的人。所以在这里,我提出了我的触发器模板,我通常从需要编码的时候开始。这只是一个提示,告诉他如何继续,最简单的方法,以防他在甲骨文上。我可以看出这让你很沮丧,好吧,我理解,我给你一个小小的拥抱来帮助你睡得更好,亲爱的。