0% menganggap dokumen ini bermanfaat (0 suara)
15 tayangan19 halaman

Struktur dan Trigger Database Film

Dokumen tersebut membahas tentang penggunaan trigger di MySQL dan Oracle untuk melakukan log aktivitas perubahan data pada tabel film/tiket, serta memperbarui stok tiket secara otomatis berdasarkan transaksi pembelian.

Diunggah oleh

Aurelia Rusli
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
15 tayangan19 halaman

Struktur dan Trigger Database Film

Dokumen tersebut membahas tentang penggunaan trigger di MySQL dan Oracle untuk melakukan log aktivitas perubahan data pada tabel film/tiket, serta memperbarui stok tiket secara otomatis berdasarkan transaksi pembelian.

Diunggah oleh

Aurelia Rusli
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd

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 :

Anda mungkin juga menyukai