sepertinya cuman kurang grant create trigger untuk user bro ... coba login dari system : grant create trigger to <user>;
regards, joey Del Ester wrote: > > > Hallo para senior Oracle. > Saya baru belajar Oracle dapat kesulitan, mudahan2 para senior oracle > ada yang bisa memberikan penyegaran........ > aku mau membuat trigger dari contoh di bawah ini. > > 1. untuk create table sih gak ada masalah, semuanya "table created", > 2. setelah nyoba create dua trigger, ke dua duanya keluar pesan > "ORA-01031: insufficient privilages". > kenapa yah.... apa memang ada yang salah dari dua sintak trigger tersebut. > 3. dalam penulisannya apa memang harus di ikutkan kata2 replace untuk > create (baru). > 4. sintak2 seperti ini apa bisa di simpan (dalam satu file/tempat) dan > sewaktu2 bisa di panggil untuk modifikasi, > > Sekian dari saya atas kebaikan hati para senior Oracle untuk > memberikan tanggapan dan pencerahannya saya ucapkan terima kasih. > > NB. > Berikut adalah sintak yang saya coba > > 1. Buat tabel dan mendefinisikan constraint > SQL> CREATE TABLE MASTER_BARANG > 2 (KODE_BRG NUMBER(4) PRIMARY KEY, > 3 NAMA_BRG VARCHAR2(20) NOT NULL, > 4 HARGA NUMBER(10), > 5 STOCK NUMBER(4)); > Table created. > > SQL> CREATE TABLE ORD > 2 (NO_ORDER NUMBER(4) PRIMARY KEY, > 3 ID_SUPPLIER NUMBER(4) NOT NULL, > 4 TGL_ORDER DATE, > 5 RP_TOTAL NUMBER(12)); > Table created. > > SQL> CREATE TABLE ORDER_DETAIL > 2 (NO_ORDER NUMBER(4) REFERENCES ORD(NO_ORDER), > 3 NO_URUT NUMBER(3), > 4 KODE_BRG NUMBER(4) REFERENCES MASTER_BARANG(KODE_BRG), > 5 HARGA NUMBER(10), > 6 QTY NUMBER(4), > 7 SUBTOTAL NUMBER(10)); > Table created. > > SQL> CREATE TABLE SALES > 2 (NO_SALES NUMBER(4) PRIMARY KEY, > 3 ID_CUST NUMBER(4) NOT NULL, > 4 TGL_SALES DATE, > 5 RP_TOTAL NUMBER(12)); > Table created. > > SQL> CREATE TABLE SALES_DETAIL > 2 (NO_SALES NUMBER(4) REFERENCES SALES(NO_SALES), > 3 NO_URUT NUMBER(3), > 4 KODE_BRG NUMBER(4) REFERENCES MASTER_BARANG(KODE_BRG), > 5 HARGA NUMBER(10), > 6 QTY NUMBER(4), > 7 SUBTOTAL NUMBER(10)); > Table created. > > 2. Membuat Trigger Database > > SQL> CREATE OR REPLACE TRIGGER update_STOCK_brg_ord > 2 BEFORE INSERT OR UPDATE OF QTY ON order_detail > 3 FOR EACH ROW > 4 BEGIN > 5 IF NVL(:OLD.QTY,0) < NVL(:NEW.QTY,0) THEN > 6 UPDATE MASTER_BARANG > 7 SET STOCK = STOCK + (NVL(:NEW.QTY,0)-NVL(:OLD.QTY,0)) > 8 WHERE KODE_BRG = :NEW.KODE_BRG; > 9 ELSE > 10 UPDATE MASTER_BARANG > 11 SET STOCK = STOCK - (NVL(:OLD.QTY,0)-NVL(:NEW.QTY,0)) > 12 WHERE KODE_BRG = :NEW.KODE_BRG; > 13 END IF; > 14 END; > 15 / > ORA-01031: insufficient privilages > > SQL> CREATE OR REPLACE TRIGGER update_STOCK_brg_sales > 2 BEFORE INSERT OR UPDATE OF QTY ON sales_detail > 3 FOR EACH ROW > 4 BEGIN > 5 IF NVL(:OLD.QTY,0) < NVL(:NEW.QTY,0) THEN > 6 UPDATE MASTER_BARANG > 7 SET STOCK = STOCK - (NVL(:NEW.QTY,0)-NVL(:OLD.QTY,0)) > 8 WHERE KODE_BRG = :NEW.KODE_BRG; > 9 ELSE > 10 UPDATE MASTER_BARANG > 11 SET STOCK = STOCK + (NVL(:OLD.QTY,0)-NVL(:NEW.QTY,0)) > 12 WHERE KODE_BRG = :NEW.KODE_BRG; > 13 END IF; > 4 END; > 15 / > ORA-01031: insufficient privilages > > [Non-text portions of this message have been removed] > > -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. [Non-text portions of this message have been removed]

