用if判断 if number<>:new.number then insert ..... end if;
if number <>:new.number then insert ..... end if; 正解。
我的意思是在 AAA 表建立的插入触发器,如果BBB表没有该条插入记录,就插入有该条记录,就抛弃,问题是如何抛弃这条记录呢??create or replace trigger trg_aaa before insert on aaa for each row declare v_count number(16); begin
v_count := 0; select count(1) into v_count from bbb where servnumber= :new.servnumber;
if (v_count > 0) then --就抛弃这条记录,如何抛弃? end if;
end trg_aaa;
不好 意思,理解错误, 用异常处理 create or replace trigger trg_aaa before insert on aaa for each row declare v_count number(16); begin
v_count := 0; select count(1) into v_count from bbb where servnumber= :new.servnumber;
if (v_count > 0) then RAISE_APPLICATION_ERROR(-20001, '不满足条件,操作取消!'); end if;
if number<>:new.number then
insert .....
end if;
insert .....
end if;
正解。
before insert on aaa
for each row
declare
v_count number(16);
begin
v_count := 0;
select count(1) into v_count from bbb where servnumber= :new.servnumber;
if (v_count > 0) then
--就抛弃这条记录,如何抛弃?
end if;
end trg_aaa;
用异常处理
create or replace trigger trg_aaa
before insert on aaa
for each row
declare
v_count number(16);
begin
v_count := 0;
select count(1) into v_count from bbb where servnumber= :new.servnumber;
if (v_count > 0) then
RAISE_APPLICATION_ERROR(-20001, '不满足条件,操作取消!');
end if;
end trg_aaa;
还是用抛出异常的办法吧