PEMBUATAN
TRIGER PADA SQL SERVER
Kali ini saya akan share tentang bagaimana cara pembuatan
trigger pada SQL Server .
Pertama-tama tama kita buat dulu databasenya dengan perintah
biasa, yakni dengan mengcreate database, disini kita akan membuat database perpustakaan.
berikut perintah dalam pembuatan database dan masuk ke dalam database itu
sendiri.
Create database
perpustakaan;
Use perpustakaan;
Kemudian jika suda selesai kita buat tabelnya.
Tabel-tabel yang akan kita buat sebagai berikut :
# tabel anggota
# tabel administrasi
# tabel buku
# tabel transaksi/pinjam (disini saya mengunakan kata
transaksi)
Berikut perintah untuk membuat tabel-tabel diatas :
Tabel anggota :
create table Anggota(
Id_Anggota varchar(10) not null
primary key,
Nama varchar(35),
Alamat varchar(35),
Tempat_Lahir varchar(20),
Tgl_Lahir datetime ,
Jenis_Kelamin varchar(10),
Pekerjaan varchar(20),
No_Telephone
varchar(15))
Tabel buku :
create table Buku(
Id_Buku varchar(10) not null
primary key ,
Judul varchar(50),
Pengarang varchar(35),
Penerbit varchar(35),
Tahun_Terbit varchar(10),
No_Rak varchar(10),
Jumlah_Buku
int )
Tabel administrasi :
create table Administrasi(
Id_Admin varchar(10) not null
primary key,
Nama varchar(35),
Alamat varchar(35),
Tempat_Lahir varchar(20),
Tgl_Lahir datetime ,
Jenis_Kelamin varchar(10),
No_Telephone
varchar(15))
Tabel transaksi :
Create table transaksi (
Id_Pinjam varchar(10) not null
primary key,
Id_Buku varchar(10) constraint
Id_Buku foreign key (Id_Buku) references Buku(Id_Buku),
Id_Anggota varchar(10)
constraint Id_Anggota foreign key (Id_Anggota)
references Anggota(Id_Anggota),
Id_Admin varchar(10) constraint
Id_Admin foreign key (Id_Admin) references
Administrasi(Id_Admin ),
Jumlah_Pinjam int,
Tgl_Pinjam datetime,
Tgl_Kembali
datetime)
Jika semua
tabelnya sudah diisi, kita tinggal mengisi atau menginsert tabelnya
Berikut
perintah yang kita harus ketikan (copykan) untuk mengisi tiap-tiap tabel :
Tabel anggota :
insert into Anggota values
('ANG-001','ADUL SUKIRMAN','JL. SENTOSA NO.12
MEDAN','JAKARTA','1990-09-21','LAKI-LAKI','WIRASWASTA','061-6646982')
insert into Anggota values
('ANG-002','BUDI ANDUK','JL. MAKMUR NO. 10 BELAWAN','MEDAN','1988-10-11' ,
'LAKI-LAKI', 'SUPIR','061-6643122')
insert into Anggota values
('ANG-003','CEPOT PAIJO','JL. MADIOSANTOSO NO.32 TITI PAPAN','SUKABUMI','1991-
09-10','LAKI-LAKI','MAHASISWA','085212343590')
insert into Anggota values
('ANG-004','DONO SANGKURIA NG','JL. KRAKATAU NO.18 MARELAN','MANDAILING
NATAL','1980-03-09','LAKI- LAKI', 'WARTAWAN','083129876578')
insert into
Anggota values ('ANG-005','EDY SUPONO','JL. PRAJURIT NO. 90 MARTUBUNG','ACEH',
Tabel buku :
insert into Buku values
('BU-001','ALGORITMA DAN PEMROGRAMAN C','RINALDI
MUNIR','INFORMATIKA','2003','R-02',15)
insert into Buku values
('BU-002','APLIKASI DATABASE VB.NET DENGAN SQL SERVER','MUHAMMAD RHIFKY','ANDI
OFFSE T','2013','R-02',25)
insert into Buku values
('BU-003','BAHASA C DASAR','JOGIYANTO PHD','ANDI OFFSET','2007','R-01',10)
insert into Buku values
('BU-004', 'MATEMATIKA DISKRIT', 'RINALDI MUNIR','INFORMATIKA','2010','R-01',5)
insert into
Buku values ('BU-005','VISUAL BASIC.NET 2010','PRIYANTO
HIDAYATULLAH','INFORMATIKA','2012','R-03',20)
Tabel administrasi :
insert into Administrasi values
('ADM-001','ENJELIA AGUSTINA','JL. UMAR NO.34
MEDAN','MEDAN','1993-08-01','PEREMPUAN','085789844932')
insert into Administrasi values
('ADM-002','GHASSANI SYAFITRI','JL. BONO NO.58 MEDAN','BANDUNG', '1990- 01-
21', 'PEREMPUAN','085209878909')
insert into Administrasi values
( 'ADM- 003', 'HENY HANDAYANI', 'JL. MUSTAFA NO. 02
MEDAN','JAKARTA','1989-07-05','PEREMPUAN','082187564765')
insert into Administrasi values
( 'ADM- 004', 'JONO SANTOSO', 'JL. MARELAN NO. 44 MEDAN','MEDAN','1992-04-09','LAKI-LAKI','083123454312')
insert into
Administrasi values ( 'ADM- 005', 'SUMARDI ALFIANTO' , 'JL. MANDOR NO. 14
MEDAN','BOGOR','1990-09-28','LAKI-LAKI', '061-6648989')
jika sudah
kita lihat isi tabel yang sudah kita inputkan tadi, dengan perintah berikut :
select * from Anggota
select * from Administrasi
select * from Buku
Berikut
hasilnya :
==========================================
Selanjutnya
pokokpembahasan kita, yakni pembuatan trigger
Berikut
pembuatan trigger insert into anggota :
create trigger trig_Anggota
on Anggota for insert
as
print 'Data Anggota Berhasil
Ditambahkan'
Print 'Dimodifikasi : ' +
CONVERT( VARCHAR , GETDATE())
Print 'Nama
Host : ' + HOST_NAME()
Jika sudah,
kita coba dengan memasukan data ke dalamnya.
Berikut
perintahnya :
insert into Anggota values ( 'ANG-
006', 'M. RHIFKY', 'JL. SENTOSA INDAH NO. 21 MEDAN', 'MEDAN', '1980- 06- 23' ,
'LAKI- LAKI', 'GURU' , '085763155905')
kita select * from Anggota untuk melihatnya
!
dan hasilnya
sebagai berikut :
==============================
Selanjutnya
trigger insert data buku :
create trigger
trig_Buku
on Buku for insert
as
print 'Data Buku
Berhasil Ditambahkan'
Print 'Dimodifikasi :
' + CONVERT( VARCHAR , GETDATE())
Print 'Nama Host : ' + HOST_NAME()
Kita coba dengan perintah berikut :
insert into Buku values ( 'BU - 006', 'SQL SERVER 2008' , 'PROF.
WAYAHDI' , 'ANDI
OFFSET', '2013' , 'R- 03' , 25)
Jika sudah selesai kita select *from buku
Dan hasilnya sebagai berikut :
============================
Dan untuk trigger administrasi kita bisa
buat dengan cara yang sama.
Dan hasilnya :
============================
Selanjutnya membuat trigger insert pada
tabel pinjam dimana jumlah pinjam update dengan jumlah buku pada tabel buku
Berikut ini perintahnya :
create trigger
Insert_Data_Pinjam on transaksi
after insert
as
update Buku set Buku.
Jumlah_Buku = Buku. Jumlah_Buku -
INSERTED
. Jumlah_Pinjam from INSERTED where
Buku. Id_Buku = INSERTED . Id_Buku
print 'Data Pinjam
Berhasil Ditambahkan'
print 'Jumlah Buku
Pada Table Buku Juga Berhasil Ter - Update'
Print 'Dimodifikasi :
' + CONVERT( VARCHAR , GETDATE())
Print 'Nama Host : ' + HOS T_NAME ()
dan kitacoba dengan memsaukan data
kedalamnya :
insert into Pinjam
values
( 'PJM- 001', 'BU -
005', 'ANG- 001', 'ADM- 003', 1 , '2013- 08- 09' ,NULL)
insert into Pinjam
values
( 'PJM- 002', 'BU -
004', 'ANG- 002', 'ADM- 003', 2 , '2013- 08- 11' ,NULL)
insert into Pinjam
values
( 'PJM- 003', 'BU -
002', 'ANG- 003', 'ADM- 003', 1 , '2013 - 08- 13' ,NULL)
insert into Pinjam
values
( 'PJM- 004', 'BU -
002', 'ANG- 004', 'ADM- 002', 1 , '2013- 08- 20' ,NULL)
insert into Pinjam
values
( 'PJM- 005', 'BU - 003', 'ANG- 005',
'ADM- 001', 2 , '2013- 08- 20' ,NULL)
Hasilnya bisa dilihat dengan perintah berikut
:
select * from transaksi
select * from Buku
dengan cara ini datanya akan di insert
dan otomatis juga jumlah buku yang ada pada tabel buku akan di update :
================================
Kemudian membuat trigger update pada
tabel buku dimana jumlah pinjam akan update dengan jumlah buku pada tabel buku
Berikut perintahya :
create trigger
Ubah_Data_Pinjam on transaksi
after update
as
update Buku set
Buku. Jumlah_Buku
=(Buku. Jumlah_Buku + deleted. Jumlah_Pinjam ) - inserted . Jum
lah_Pinjam from
deleted, ins erted where Buku. Id_Buku= deleted. Id_Buku
print 'Data Pinjam
Berhasil Diubah'
print 'Jumlah Buku
Pada Table Buku Juga Berhasil Ter - Update'
Print 'Dimodifikasi : ' + CONVERT( VARCHAR
, GETDATE())Print 'Nama
Host : ' + HOST_NAME()
Untuk
mencobanya kita bisa update dengan perintah :
update transaksi set Jumlah_Pinjam =
5 where Id_Pinjam= 'PJM- 003'
dan kita bisa melihatnya dengan perintah
:
select * from transaksi
select * from Buku
dan berikut
hasil updatenya :
==================================
Kemudian
membuat trigger delete pada tabel transaksi dimana jumlah transaksi update
dengan jumlah buku pada tabel buku :
Berikut
perintahnya :
create trigger
Hapus_Data_Pinjam on transaksi
after delete
as
update Buku set
Buku. Jumlah_Buku =
Buku. Jumlah_Buku + deleted. Jumlah_Pinjam
from deleted where
Buku. Id_Buku = deleted. Id_Buku
print 'Data Pinjam
Berhasil Dihapus'
print 'Jumlah Buku
Pada Tabe Buku Juga Berhasil Ter- Update'
Print 'Dimodifikasi :
' + CONVERT( VARCHAR , GETDATE())
Print 'Nama Host : ' + HOST_NAME()
Dan untuk ketikan perintah berikut ini
untuk mencobanya :
delete from Pinjam where Id_Pinjam=
'PJM- 003'
dan untuk
melihat hasilnya kita bisa mengetikan perintah berikut ini :
select * from Pinjam
select * from Buku
dan akan seperti ini :
=======================================
0 komentar:
Posting Komentar