Salah satu caranya adalah dengan menggunakan variabel global untuk melacak jumlah baris karena tidak ada cara lain untuk mendapatkan jumlah baris dari pemicu tingkat pernyataan. Anda kemudian akan membutuhkan tiga pemicu... satu tingkat pernyataan untuk menginisialisasi variabel sebelum pernyataan dijalankan, satu tingkat baris untuk menambahkan satu ke variabel untuk setiap baris, satu tingkat pernyataan untuk menggunakan jumlah baris sesuai keinginan Anda. Pertama, siapkan variabel dan beberapa prosedur untuk membantunya:
create or replace package PKG_ROWCOUNT is
NUMROWS number;
procedure INIT_ROWCOUNT;
procedure ADD_ONE;
function GET_ROWCOUNT
return number;
end PKG_ROWCOUNT;
/
create or replace package body PKG_ROWCOUNT as
procedure INIT_ROWCOUNT is
begin
NUMROWS := 0;
end;
procedure ADD_ONE is
begin
NUMROWS := Nvl(NUMROWS, 0) + 1;
end;
function GET_ROWCOUNT
return number is
begin
return NUMROWS;
end;
end PKG_ROWCOUNT;
/
Pemicu pertama untuk menginisialisasi variabel:
create or replace trigger CUSTOMER_CHANGES_TRIGGER_1
before insert or update or delete
on CUSTOMERS
begin
PKG_ROWCOUNT.INIT_ROWCOUNT;
end;
Yang kedua diperbarui per baris:
create or replace trigger CUSTOMER_CHANGES_TRIGGER_2
after insert or update or delete
on CUSTOMERS
for each row
begin
PKG_ROWCOUNT.ADD_ONE;
end;
/
Yang ketiga untuk menampilkan total:
create or replace trigger CUSTOMER_CHANGES_TRIGGER_3
after insert or update or delete
on CUSTOMERS
begin
Dbms_output.
PUT_LINE(PKG_ROWCOUNT.GET_ROWCOUNT || ' rows were affected.');
end;