Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SET SERVEROUTPUT ON;
- SET ECHO ON;
- /* buat tabel STOK */
- CREATE TABLE STOK (
- KODE CHAR(4) NOT NULL PRIMARY KEY,
- NAMA_BARANG VARCHAR2(25),
- JUMLAH_STOK NUMBER(10)
- );
- /* data-data dummy */
- INSERT INTO STOK VALUES ('0001', 'Televisi', 25);
- INSERT INTO STOK VALUES ('0002', 'Radio Transistor', 50);
- INSERT INTO STOK VALUES ('0003', 'Kipas Angin', 30);
- INSERT INTO STOK VALUES ('0004', 'Tape', 35);
- INSERT INTO STOK VALUES ('0005', 'AC', 15);
- /* Contoh 1 Membuat trigger untuk event BEFORE INSERT pada tabel STOK */
- CREATE OR REPLACE TRIGGER TR_BI_STOK
- BEFORE INSERT ON STOK
- FOR EACH ROW
- BEGIN
- DBMS_OUTPUT.PUT_LINE ('Trigger BEFORE INSERT dilaksanakan');
- END;
- /
- /* Contoh 2 Membuat trigger untuk event AFTER UPDATE pada tabel STOK */
- CREATE OR REPLACE TRIGGER TR_AU_STOK
- AFTER UPDATE ON STOK
- FOR EACH ROW
- BEGIN
- DBMS_OUTPUT.PUT_LINE ('Trigger AFTER UPDATE dilaksanakan');
- END;
- /
- /* Contoh 3 Membuat trigger untuk event AFTER DELETE pada tabel STOK */
- CREATE OR REPLACE TRIGGER TR_AD_STOK
- AFTER DELETE ON STOK
- FOR EACH ROW
- BEGIN
- DBMS_OUTPUT.PUT_LINE ('Trigger AFTER DELETE dilaksanakan');
- END;
- /
- /* Contoh 1 Mengecek jalannya trigger TR_BI_STOK */
- INSERT INTO STOK VALUES ('0006', 'Lemari Es', 20);
- /* Contoh 2 Melakukan pengecekan terhadap trigger TR_AU_STOK */
- UPDATE STOK
- SET JUMLAH_STOK = 10
- WHERE KODE = '0006';
- /* Contoh 3 Melakukan pengecekan terhadap trigger TR_AD_STOK */
- DELETE FROM STOK WHERE KODE = '0006';
- /* Create Table PEMBELIAN dan PENJUALAN */
- CREATE TABLE PEMBELIAN (
- KD_PEMBELIAN CHAR(6) NOT NULL,
- KODE_BARANG CHAR(4),
- JUMLAH_PEMBELIAN NUMBER(5),
- CONSTRAINT PK_PEMBELIAN PRIMARY KEY (KD_PEMBELIAN),
- CONSTRAINT FK_PEMBELIAN_STOK FOREIGN KEY (KODE_BARANG)
- REFERENCES STOK (KODE)
- );
- CREATE TABLE PENJUALAN (
- KD_PENJUALAN CHAR(6) NOT NULL,
- KODE_BARANG CHAR(4),
- JUMLAH_PENJUALAN NUMBER(5),
- CONSTRAINT PK_PENJUALAN PRIMARY KEY (KD_PENJUALAN),
- CONSTRAINT FK_PENJUALAN_STOK FOREIGN KEY (KODE_BARANG)
- REFERENCES STOK (KODE)
- );
- /* Membuat trigger untuk menambah JUMLAH_STOK pada tabel STOK */
- CREATE OR REPLACE TRIGGER TR_AI_PEMBELIAN
- AFTER INSERT ON PEMBELIAN
- FOR EACH ROW
- DECLARE
- X NUMBER;
- BEGIN
- X := :NEW.JUMLAH_PEMBELIAN;
- UPDATE STOK
- SET JUMLAH_STOK = JUMLAH_STOK + X
- WHERE KODE = :NEW.KODE_BARANG;
- END;
- /
- /* Cek kebenaran trigger */
- SELECT * FROM STOK;
- INSERT INTO PEMBELIAN VALUES ('BE-001', '0005', 10);
- SELECT * FROM STOK;
- /* Membuat trigger untuk mengurangi JUMLAH_STOK pada tabel STOK */
- CREATE OR REPLACE TRIGGER TR_AI_PENJUALAN
- AFTER INSERT ON PENJUALAN
- FOR EACH ROW
- DECLARE
- X NUMBER;
- BEGIN
- X := :NEW.JUMLAH_PENJUALAN;
- UPDATE STOK
- SET JUMLAH_STOK = JUMLAH_STOK - X
- WHERE KODE = :NEW.KODE_BARANG;
- END;
- /
- /* Cek kebenaran trigger */
- SELECT * FROM STOK;
- INSERT INTO PENJUALAN VALUES ('JU-001', '0005', 7);
- SELECT * FROM STOK;
- /* Cascading delete dengan trigger */
- CREATE TABLE PELANGGAN (
- NO_PELANGGAN NUMBER(10),
- NAMA VARCHAR2(25),
- ALAMAT VARCHAR2(30),
- KOTA VARCHAR2(15)
- );
- CREATE TABLE ORDERS (
- NO_ORDER NUMBER(10),
- NO_PELANGGAN NUMBER(10),
- JUMLAH_ORDER NUMBER(5)
- );
- INSERT INTO PELANGGAN VALUES (100, 'Ashanty', 'Meruya', 'Bandung');
- INSERT INTO PELANGGAN VALUES (101, 'Bunda', 'Joglo', 'Jakarta');
- INSERT INTO ORDERS VALUES (89012, 101, 20);
- CREATE OR REPLACE TRIGGER TR_BD_PELANGGAN
- BEFORE DELETE ON PELANGGAN
- FOR EACH ROW
- BEGIN
- DELETE FROM ORDERS
- WHERE NO_PELANGGAN = :OLD.NO_PELANGGAN;
- END;
- /
- DELETE FROM PELANGGAN WHERE NO_PELANGGAN = 101;
- /* Mengaktifkan dan Menon-aktifkan Trigger | Untuk Event AFTER INSERT */
- CREATE OR REPLACE TRIGGER TR_AI_PELANGGAN
- AFTER INSERT ON PELANGGAN
- FOR EACH ROW
- BEGIN
- DBMS_OUTPUT.PUT_LINE ('Trigger AFTER INSERT dilaksanakan');
- END;
- /
- /* Mengaktifkan dan Menon-aktifkan Trigger | Untuk Event AFTER UPDATE */
- CREATE OR REPLACE TRIGGER TR_AU_PELANGGAN
- AFTER UPDATE ON PELANGGAN
- FOR EACH ROW
- BEGIN
- DBMS_OUTPUT.PUT_LINE ('Trigger AFTER UPDATE dilaksanakan');
- END;
- /
- /* Sekarang kita akan menon-aktifkan TR_AI_PELANGGAN. */
- ALTER TRIGGER TR_AI_PELANGGAN DISABLE;
- /* Lakukan pengecekan dengan memasukkan sebuah baris baru ke tabel PELANGGAN. */
- INSERT INTO PELANGGAN VALUES (102, 'Andre Taulani', 'Iskandarsyah 6', 'Jakarta');
- /* aktifkan kembali trigger dengan cara. */
- ALTER TRIGGER TR_AI_PELANGGAN ENABLE;
- /* Lakukan pengecekan dengan memasukkan sebuah baris baru ke tabel PELANGGAN */
- INSERT INTO PELANGGAN VALUES(103, 'Titi Kamal', 'Lebak Bulus', 'Jakarta');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement