我的问题是因为我是oracle和pl / sql的新手,可以使用自构造函数检查插入过程中的值。 示例根据另一个属性值检查varray项的数量?
Create or Replace Type test_arr as Varray(20) of number;
Create or Replace Type test_typ as Object(
tID number(5),
tType varchar2(1),
tArray test_arr
);
我想测试tType ='A'时tArray.count应该小于2,如果tType ='B',则tArray.count应该在5到20之间。 我想在插入过程中测试这个:
Create Table test_tbl of test_typ;
Insert Into test_tbl Values(187,'A',test_arr(1,6,7)); /*This should give an error and not insert the record as the tType is 'A' and the tArray has 3 values!*/
我不确定我是否能以自我回报的方式做到这一点。这里的主要内容是我需要在插入过程中进行检查!
我会提供任何帮助。谢谢!
答案 0 :(得分:2)
这可以使用触发器
完成create trigger instrg BEFORE INSERT ON test_tbl
FOR EACH ROW
BEGIN
IF :NEW.tType = 'A' AND :NEW.tArray.COUNT >= 2 then
RAISE_APPLICATION_ERROR(-20001, 'error 1');
ELSIF :NEW.tType = 'B' AND :NEW.tArray.COUNT NOT BETWEEN 5 AND 20 then
RAISE_APPLICATION_ERROR(-20001, 'error 2');
END IF;
END;
查看if else
条件,我认为您可以轻松了解其中的条件,如果需要,您也可以修改它们。