Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
嵌套表上的Oracle触发器_Oracle_Triggers_Nested - Fatal编程技术网

嵌套表上的Oracle触发器

嵌套表上的Oracle触发器,oracle,triggers,nested,Oracle,Triggers,Nested,我想创建一个触发器来验证出生日期,例如,它不是>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 }

我想创建一个触发器来验证出生日期,例如,它不是>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。

您不能定义“在更新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;

任何你尝试过但不起作用的东西?