MYSQL
Table 1
CREATE TABLE film(
id_film int(5) NOT NULL PRIMARY KEY AUTO_INCREMENT,
nama_film varchar(255) NOT NULL,
harga int(10) NOT NULL DEFAULT '0',
stok_kursi int(10) NOT NULL DEFAULT '0'
)
Table 2 :
CREATE TABLE film_log (
id_log int(5) NOT NULL PRIMARY KEY AUTO_INCREMENT,
keterangan varchar(255) NOT NULL,
waktu date NOT NULL,
nama_film varchar(255) NOT NULL,
harga int(10) NOT NULL DEFAULT '0',
stok_kursi int(10) NOT NULL DEFAULT '0'
)
Table 3 :
CREATE TABLE transaksi (
id_transaksi int(5) NOT NULL PRIMARY KEY AUTO_INCREMENT,
id_film int(5) NOT NULL,
jumlah int(5) NOT NULL,
total int(10) NOT NULL,
tgl date NOT NULL,
FOREIGN KEY (id_film)
REFERENCES film(id_film)
)
Pembuatan query log (studi kasus perubahan film):
DELIMITER $$
CREATE TRIGGER perubahan_film AFTER INSERT ON film FOR EACH
ROW BEGIN
INSERT INTO film_log (keterangan, waktu, nama_film, harga,
stok_kursi) VALUES('tambah', now(), new.nama_film, [Link],
new.stok_kursi);
END $$
DELIMITER ;
Insert data :
Sebelum melakukan insert data baru (table film):
Sesudah melakukan insert data baru (table film_log):
Pembuatan query update (studi kasus update stok kursi):
DELIMITER $$
CREATE TRIGGER stok_kursi_update AFTER INSERT ON transaksi FOR EACH
ROW BEGIN
UPDATE film SET stok_kursi=stok_kursi-[Link]
WHERE id_film=NEW.id_film;
END $$
DELIMITER ;
Insert data:
Sebelum terjadi update data (table film):
Setelah terjadi upadte data (table film) :
Pembuatan query delete :
DELIMITER $$
CREATE TRIGGER batal_transaksi AFTER DELETE ON transaksi FOR EACH
ROW BEGIN
UPDATE film SET stok_kursi=stok_kursi + [Link]
WHERE id_film=OLD.id_film;
END $$
DELIMITER ;
Sebelum menghapus data :
Sesudah menghapus data :
Sebelum terjadi batal transaksi (table film):
Sesudah terjadi batal transaksi (table film):
Setelah melakukan perubahan pembatalan transaksi maka jumlah tiket akan d kembalikan ke
jumlah stok kursi yang sebelumnya telah ditentukan.
Oracle :
Table 1 :
CREATE TABLE tbl_tiket (
id_tiket int NOT NULL PRIMARY KEY,
nama_film varchar(255) NOT NULL,
harga int NOT NULL,
stok_kursi int NOT NULL
)
CREATE SEQUENCE tbl_tiket_sequence;
Mengisi data di table tiket:
CREATE OR REPLACE TRIGGER tbl_tiket_on_insert
BEFORE INSERT ON tbl_tiket
FOR EACH ROW
BEGIN
SELECT tbl_tiket_sequence.nextval
INTO :new.id_tiket
FROM dual;
END;
Table 2 :
CREATE TABLE tbl_tiket_log (
id_tiket int NOT NULL PRIMARY KEY,
keterangan varchar(255) NOT NULL,
waktu date NOT NULL,
nama_film varchar(255) NOT NULL,
harga int NOT NULL,
stok_kursi int NOT NULL
)
CREATE SEQUENCE tbl_tiket_log_sequence;
CREATE OR REPLACE TRIGGER tbl_tiket_log_on_insert
BEFORE INSERT ON tbl_produk_log
FOR EACH ROW
BEGIN
SELECT tbl_tiket_log_sequence.nextval
INTO :new.id_log
FROM dual;
END;
Table 3 :
CREATE TABLE tbl_tagihan (
id_tagihan int PRIMARY KEY,
id_tiket int NOT NULL,
jumlah int NOT NULL,
total int NOT NULL,
tgl date NOT NULL,
CONSTRAINT fk_kolom
FOREIGN KEY (id_tiket)
REFERENCES tbl_tiket (id_tiket)
);
Pembuatan query log (studi kasus perubahan tiket) :
CREATE OR REPLACE TRIGGER tbl_tiket_log_data_baru
AFTER INSERT ON tbl_tiket
FOR EACH ROW
BEGIN
INSERT INTO TBL_TIKET_LOG (KETERANGAN, WAKTU, NAMA_FILM,
HARGA, STOK_KURSI)
VALUES ('tambah', SYSDATE, :new.nama_film, :[Link],
:new.stok_kursi);
END;
Sebelum melakukan penambahan data baru :
Setelah melakukan penambahan data baru :
Hasil penambahan data baru :
Query membuat update (studi kasus update stok):
CREATE OR REPLACE TRIGGER tagihan_data_baru
AFTER INSERT ON tbl_tagihan
FOR EACH ROW
BEGIN
UPDATE TBL_TIKET SET STOK_KURSI=STOK_KURSI-:[Link] WHERE
id_tiket=:new.id_tiket;
END;
Sebelum melakukan tagihan data baru :
Sesudah melakukan tagihan data baru :