Anda di halaman 1dari 19

PROGRAM STUDI S1 TEKNIK INFORMATIKA

UNIVERSITAS PAMULANG

Mata Kuliah : Basis Data 2


Kode : TPL0302
SKS : 2 SKS

Tugas Terstruktur Pertemuan ke – 9


Trigger SQL Server

InfoTI_unpam informatika.unpam.ac.id
Tugas Terstruktur 9 Trigger INSTEAD OF
A. INSTEAD OF INSERT
1. Buka MS SQL Server -> Klik New Query

2. Buat database baru dengan nama “nama_mhs_nim”


--1. Buat database baru
create database “nama_mhs_nim;

3. Gunakan Database “namaDB”


--2. Gunakan DB
use namaDB;

Program Studi Teknik Informatika, Universitas Pamulang


Contoh Kasus
4. Buat Table baru dengan nama “Barang”
--3. Buat Tabel baru dengan nama barang
create table barang(
id_barang char(5) not null,
nama_barang char(20) not null,
jumlah int null,
harga int null,
constraint pk_barang primary key(id_barang)
);

Program Studi Teknik Informatika, Universitas Pamulang


Contoh Kasus
Fungsi untuk membatasi
5. Buat Trigger INSTEAD OF INSERT insert harga tidak boleh
kurang dari 10000
create trigger inputan
on barang
instead of insert
as
begin
if exists(select 1 from inserted where harga<10000)
begin
throw 100000,'Harga barang tidak boleh kurang dari 10.000',1;
end
else
begin
--jika inputa valid maka lakukan insert data
insert into barang(id_barang,nama_barang,jumlah,harga)
select id_barang,nama_barang,jumlah,harga from inserted
end
end

Program Studi Teknik Informatika, Universitas Pamulang


Contoh Kasus
6. Jalankan Perintah INSERT Data ke tabel barang
insert into barang(id_barang,nama_barang,jumlah,harga) values
('001','RINSO',10,100000);

7. Tampilkan data Pada tabel barang


select * from barang

8. Jalankan Perintah INSERT Data ke tabel barang masukan harga kurang dari 10.000 klik execute
insert into barang(id_barang,nama_barang,jumlah,harga) values
('001','RINSO',10,5000);

9. Hasilnya (Data gagal di insert karena kurang dari 10.000)

Program Studi Teknik Informatika, Universitas Pamulang


B. INSTEAD OF UPDATE
1. Masih di database lat_trigger dan tabel barang, Buat Contoh TRIGGER INSTEAD OF UPDATE
create trigger hasilUpdate
on barang Fungsi untuk membatasi
instead of update saat update harga tidak
as boleh kurang dari 20000
begin
if exists(select 1 from inserted where harga<20000)
begin
throw 100000,'Data Tidak bisa di update',1;
end
else
begin
--jika data valid
update barang set nama_barang=inserted.nama_barang, jumlah=inserted.jumlah,
harga=inserted.harga from barang inner join inserted on
barang.id_barang=inserted.id_barang;
end
end

Program Studi Teknik Informatika, Universitas Pamulang


B. INSTEAD OF UPDATE
2. Lakukan Proses UPDATE valid
update barang set harga=20000 from barang where id_barang=1

3. Lakukan Proses UPDATE in valid


update barang set harga=2000 from barang where id_barang=1

Program Studi Teknik Informatika, Universitas Pamulang


C. INSTEAD OF DELETE
1. Masih di database lat_trigger dan tabel barang, Buat Contoh TRIGGER INSTEAD OF DELETE
create trigger hasilDelete Fungsi untuk membatasi
on barang saat perintah delete, data
instead of delete yang bisa dihapus adalah
as data yang jumlah barang 0
begin
if exists(select 1 from deleted where jumlah=0)
begin
delete barang from barang inner join deleted on
barang.id_barang=deleted.id_barang
end
else
begin
throw 100000,'Data Tidak bisa dihapus',1
end
end

Program Studi Teknik Informatika, Universitas Pamulang


C. INSTEAD OF DELETE
2. Jalankan Perintah Delete
delete from barang where id_barang='002';

Jika jumlah barang 0 maka data dapat dihapus, jika tidak data tidak bisa dibapus

Program Studi Teknik Informatika, Universitas Pamulang


Contoh Kasus AFTER
A. AFTER INSERT
1. Masih di database lat_trigger dan tabel barang, Tambahkan Tabel Baru dengan nama
AuditBarang
CREATE TABLE AuditBarang (
AuditID INT identity (1,1) PRIMARY KEY,
id_barang char(5),
AuditDate DATETIME,
Action VARCHAR(50)
);

Program Studi Teknik Informatika, Universitas Pamulang


Contoh Kasus AFTER
A. AFTER INSERT
2. Buat Trigger AFTER INSERT ( Trigger ini akan berjalan setelah proses insert ) Lalu klik Execute

CREATE TRIGGER auditInsert


ON barang
AFTER INSERT
AS
BEGIN
-- Operasi penyisipan
IF EXISTS (SELECT * FROM inserted)
BEGIN
INSERT INTO AuditBarang(id_barang,AuditDate, Action)
SELECT id_barang, GETDATE(), 'Insert' FROM inserted;
END

END;

Program Studi Teknik Informatika, Universitas Pamulang


Contoh Kasus AFTER
A. AFTER INSERT
3. Lakukan Proses insert data
insert into barang(id_barang,nama_barang,jumlah,harga)values
('010','SHAMPOO',20,70000)

4. Tampilkan Data barang dan AuditBarang dengan inner join (data pada audit barang
otomatis terisi karena sudah ditambahkan perintah trigger
select * from AuditBarang inner join barang
on AuditBarang.id_barang=barang.id_barang;

Program Studi Teknik Informatika, Universitas Pamulang


Contoh Kasus AFTER

A. AFTER UPDATE
1. Masih di database lat_trigger , tabel barang, dan AuditBarang, Buat Trigger baru AFTER UPDATE
CREATE TRIGGER auditUpdate
ON barang
AFTER UPDATE
AS
BEGIN
-- Operasi penyisipan
IF EXISTS (SELECT * FROM inserted)
BEGIN
INSERT INTO AuditBarang(id_barang,AuditDate, Action)
SELECT id_barang, GETDATE(), 'Update' FROM inserted;
END

END;

Program Studi Teknik Informatika, Universitas Pamulang


Contoh Kasus AFTER

A. AFTER UPDATE
2. Jalankan Perintah UPDATE pada tabel Barang
update barang set harga=400000 where id_barang='010';

3. Tampilkan hasil pada tabel AuditBarang


select * from AuditBarang inner join barang
on AuditBarang.id_barang=barang.id_barang;

Program Studi Teknik Informatika, Universitas Pamulang


Contoh Kasus AFTER

A. AFTER DELETE
1. Masih di database lat_trigger , tabel barang, dan AuditBarang, Buat Trigger baru AFTER DELETE
CREATE TRIGGER auditDelete
ON Barang
AFTER DELETE
AS
BEGIN
DECLARE @id_barang char(5);
-- Mendapatkan id_barang dari data yang dihapus
SELECT @id_barang = deleted.id_barang FROM deleted;
-- Operasi penyisipan
IF @id_barang IS NOT NULL
BEGIN
INSERT INTO AuditBarang(id_barang, AuditDate, Action)
VALUES (@id_barang, GETDATE(), 'Delete');
END
END;

Program Studi Teknik Informatika, Universitas Pamulang


Contoh Kasus AFTER

A. AFTER DELETE
2. Jalankan Perintah Delete
delete from barang where id_barang='007';

3. Tampilkan Hasil pada tabel AuditBarang


select * from AuditBarang left outer join barang
on AuditBarang.id_barang=barang.id_barang;

Program Studi Teknik Informatika, Universitas Pamulang


TERIMA KASIH

Program Studi Teknik Informatika, Universitas Pamulang


TERIMA KASIH, MAHASISWA TEKNIK INFORMATIKA UNGGUL, ANDA SUDAH BELAJAR DENGAN LUAR BIASA

Program Studi Teknik Informatika, Universitas Pamulang


TERIMA KASIH, MAHASISWA TEKNIK INFORMATIKA UNGGUL, ANDA SUDAH BELAJAR DENGAN LUAR BIASA

Program Studi Teknik Informatika, Universitas Pamulang

Anda mungkin juga menyukai