嵌套表上的Oracle触发器
我想创建一个触发器来验证出生日期,例如,它不是>SYSDATE:嵌套表上的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 }
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;
任何你尝试过但不起作用的东西?