это мой код:
create or replace trigger th
after insert on stock
for each row
declare
sqty number;
rl number;
isb number;
rq number;
begin
set sqty=(select stockqty from inserted);
set rl=(select reorderlevel from inserted);
set isb=(select isbn from inserted);
set rq=(select reorderquantity from inserted);
go
if sqty> rl then
delete from stock where isb=isbn;
insert into stock values(isb,sqty,rl,rq);
end if;
end;
Вопросы:
1.Если используется триггер после вставки, это означает, что все это происходит после правильной вставки. Что, если я не хочу вставлять определенные данные, что мне делать? *
2.Если я вставил несколько данных, как их получить? Вызывается ли триггер для каждой вставки? (Если это триггер вставки).
3. это дает мне ошибку компиляции, я просто не могу найти ошибку, даже использование курсора дает мне ошибку.
create or replace trigger t1
after insert on stock for each row
declare
cursor cl is select isbn,stockqty,reorderlevel,reorderquantity from stock where isbn>0;
begin
for c2 in c1 loop
if c2.stockqty>c2.reorderlevel then
delete from stock where isbn=c2.isbn;
insert into stock values(c2.isbn,c2.reorderquantity,c2.reorderlevel,c2.reorderquantity);
end if;
end loop;
end;
Кстати, я использую sql developer, поэтому многие из моих триггеров не выполняются, но они выполняются в oracle 8i.