【问题标题】:Oracle Trigger on Nested Table嵌套表上的 Oracle 触发器
【发布时间】:2016-11-01 03:29:36
【问题描述】:

我想创建一个触发器来验证出生日期,例如它不是> SYSDATE:

Employee -- STRUCTURED TYPE
{
     name VARCHAR2(10)
     lastname VARCHAR(10)
     birthdate DATE
}

Employee_List TABLE OF Employee -- NESTED TABLE

Museum -- TABLE
{
     id NUMBER
     EmployeeList Employee_List
}

我使用的是 Oracle 10g。

【问题讨论】:

  • 您尝试过什么但没有成功?

标签: oracle triggers nested


【解决方案1】:

您不能定义像“在 Museum.EmployeeList.birthdate 更新之前”这样的触发器 但是您可以在更新博物馆之前编写一个普通触发器,并且在触发器主体中您可以遍历所有员工检查日期。

试试这个:

CREATE OR REPLACE TRIGGER BUIR_Museum 
    BEFORE INSERT OR UPDATE ON Museum
    FOR EACH ROW

BEGIN
    IF :NEW.EmployeeList IS NOT NULL THEN
        FOR i IN :NEW.EmployeeList.FIRST..:NEW.EmployeeList.LAST LOOP
            IF :NEW.EmployeeList(i).birthdate > SYSDATE THEN
                RAISE_APPLICATION_ERROR(-20029, 'Invalid birthday');
            END IF;
        END LOOP;
    END IF;
END;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-26
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 2011-11-01
    • 2023-03-11
    相关资源
    最近更新 更多