जैसा कि @San बताते हैं, persons
. पर एक पंक्ति-स्तरीय ट्रिगर आम तौर पर persons
से पूछताछ नहीं कर सकता टेबल।
आपको दो ट्रिगर की आवश्यकता होगी, एक पंक्ति-स्तरीय ट्रिगर जो पुराने और नए लिंग को देख सकता है और एक कथन-स्तरीय ट्रिगर जो गिनती कर सकता है। यदि आप 11g का उपयोग कर रहे हैं, तो आप पंक्ति और कथन-स्तर दोनों ब्लॉकों के साथ एक मिश्रित ट्रिगर भी बना सकते हैं।
create or replace trigger trg_stmt
after update
on persons
declare
l_cnt integer;
begin
select count(*)
into l_cnt
from persons;
dbms_output.put_line( 'There are now ' || l_cnt || ' rows.' );
end;
create or replace trigger trg_row
after update
on persons
for each row
begin
if( :new.gender != :old.gender )
then
dbms_output.put_line( 'Old gender = ' || :old.gender || ', new gender = ' || :new.gender );
end if;
end;