Sabtu, 14 Januari 2012

Pertemuan 23

create database ContohTrigger
use ContohTrigger

create table TblBagian
(KodeBag char(2)primary key, bagian char(15))

--Membuat tabel pegawai berhubungan dengan tabel Bagian
create table TblPegawai(nip char(5) primary key, nama char(25),
jabatan char(15), gaji int, KodeBag char(2)REFERENCES TblBagian(KodeBag))

insert into TblBagian values('KU','Keuangan')
insert into TblBagian values('KS','Kesehatan')
insert into TblBagian values('AM','Adminst')
insert into TblBagian values('SM','Personalia')

insert into TblPegawai values('09101','Budi','Direktur',5000000,'KU')
insert into TblPegawai values('09102','Iwan','Kabag',3000000,'AM')
insert into TblPegawai values('09103','Dian','Staff',1000000,'KS')
insert into TblPegawai values('09104','Waty','Staff',1000000,'SM')

select * from TblBagian
select * from TblPegawai

/*TRIGGER
Trigger adalah stored prosedur khusus yang dijalankan secara otamatis
pada saat modifikasi data (UPDATE,INSERT,DELETE)
--Trigger untuk menambahkan data baru pada tabel pegawai*/
create trigger tampilpesan
on TblPegawai
for insert
as
print 'DATA SUDAH DISIMPAN'

--Menambah data pegawai yang baru
insert into tblpegawai values('09105','Putra Nababan','sales',2500000,'KS')

/* mengubah trigger (misal) mengubah trigger tampil pesan
dgn mengubah pesan yang ditampilkan*/
Alter trigger tampilpesan
on Tblpegawai
for insert
as
print 'DATA TELAH DISIMPAN DENGAN BAIK'

Insert into TblPegawai values('09106','Diana','Account',8000000,'KU')

--Menonaktifkan trigger pada suatu tabel
ALTER TABLE TblPegawai DISABLE TRIGGER tampilpesan

--Contoh tambahan :
insert into TblPegawai values('09107','Chandra Halim','Kabag',2500000,'KU')

--Mengaktifkan kembali trigger
ALTER TABLE TblPegawai ENABLE TRIGGER tampilpesan

--Menghapus TRIGGER
DROP TRIGGER tampilpesan

/* Membuat TRIGGER dengan nama cek jabatan yang akan menolak jika menambah
pegawai yang jabatannya juga DIREKTUR
Trigger memiliki kemampuan yaitu :
inserted: menimpan data-data yang di insert dan di update
deleted: menimpan data-data yang di delete
*/
create trigger cekjabatan
on Tblpegawai
for insert
as
declare @jumlah int
select @jumlah=count(nip)from TblPegawai
where jabatan='direktur'
if(@jumlah>1)
begin
delete TblPegawai from TblPegawai,inserted
where TblPegawai.nip=inserted.nip
print 'JABATAN DIREKTUR SUDAH ADA'
end
--CONTOH***
insert into TblPegawai values('09109','Dyah Pitaloka','Direktur',8000000,'SM')

/* TRIGGER UPDATE
Trigger yang terjadi pada saat mengubah data
pada suatu tabel, contoh : membuat trigger
yang mengubah gaji pegawai apabila jabatannya
berubah menjadi staff*/

create trigger ubahgaji
on TblPegawai
for update
as
update Tblpegawai set gaji=1500000 where jabatan='Staff'
print 'Gaji telah diubah'
----------------------------------------------
select*from TblPegawai

/* mengubah trigger(misal) mengubah trigger tampil pesan
dgn mengubah pesan yang ditampilkan
mengubah jabatan pegawai yang bernama iwan menjadi staff yang sebelumnya
jabatannya adalah kabag ( diketahui nip=102 )
*/
update TblPegawai set jabatan='Staff'where nip='09104'

select*from TblPegawai

Rabu, 04 Januari 2012

PERTEMUAN 22

create database ContohTrigger
use ContohTrigger

create table TblBagian
(KodeBag char(2)primary key, bagian char(15))

--Membuat tabel pegawai berhubungan dengan tabel Bagian
create table TblPegawai(nip char(5) primary key, nama char(25),
jabatan char(15), gaji int, KodeBag char(2)REFERENCES TblBagian(KodeBag))

insert into TblBagian values('KU','Keuangan')
insert into TblBagian values('KS','Kesehatan')
insert into TblBagian values('AM','Adminst')
insert into TblBagian values('SM','Personalia')

insert into TblPegawai values('09101','Budi','Direktur',5000000,'KU')
insert into TblPegawai values('09102','Iwan','Kabag',3000000,'AM')
insert into TblPegawai values('09103','Dian','Staff',1000000,'KS')
insert into TblPegawai values('09104','Waty','Staff',1000000,'SM')

select * from TblBagian
select * from TblPegawai

/*TRIGGER
Trigger adalah stored prosedur khusus yang dijalankan secara otamatis
pada saat modifikasi data (UPDATE,INSERT,DELETE)
--Trigger untuk menambahkan data baru pada tabel pegawai*/
create trigger tampilpesan
on TblPegawai
for insert
as
print 'DATA SUDAH DISIMPAN'

--Menambah data pegawai yang baru
insert into tblpegawai values('09105','Putra Nababan','sales',2500000,'KS')

/* mengubah trigger (misal) mengubah trigger tampil pesan
dgn mengubah pesan yang ditampilkan*/
Alter trigger tampilpesan
on Tblpegawai
for insert
as
print 'DATA TELAH DISIMPAN DENGAN BAIK'

Insert into TblPegawai values('09106','Diana','Account',8000000,'KU')

--Menonaktifkan trigger pada suatu tabel
ALTER TABLE TblPegawai DISABLE TRIGGER tampilpesan

--Contoh tambahan :
insert into TblPegawai values('09107','Chandra Halim','Kabag',2500000,'KU')

--Mengaktifkan kembali trigger
ALTER TABLE TblPegawai ENABLE TRIGGER tampilpesan

--Menghapus TRIGGER
DROP TRIGGER tampilpesan

/* Membuat TRIGGER dengan nama cek jabatan yang akan menolak jika menambah
pegawai yang jabatannya juga DIREKTUR
Trigger memiliki kemampuan yaitu :
inserted: menimpan data-data yang di insert dan di update
deleted: menimpan data-data yang di delete
*/
create trigger cekjabatan
on Tblpegawai
for insert
as
declare @jumlah int
select @jumlah=count(nip)from TblPegawai
where jabatan='direktur'
if(@jumlah>1)
begin
delete TblPegawai from TblPegawai,inserted
where TblPegawai.nip=inserted.nip
print 'JABATAN DIREKTUR SUDAH ADA'
end
--CONTOH***
insert into TblPegawai values('09109','Dyah Pitaloka','Direktur',8000000,'SM')

/* TRIGGER UPDATE
Trigger yang terjadi pada saat mengubah data
pada suatu tabel, contoh : membuat trigger
yang mengubah gaji pegawai apabila jabatannya
berubah menjadi staff*/

create trigger ubahgaji
on TblPegawai
for update
as
update Tblpegawai set gaji=1500000 where jabatan='Staff'
print 'Gaji telah diubah'
----------------------------------------------
select*from TblPegawai

/* mengubah trigger(misal) mengubah trigger tampil pesan
dgn mengubah pesan yang ditampilkan
mengubah jabatan pegawai yang bernama iwan menjadi staff yang sebelumnya
jabatannya adalah kabag ( diketahui nip=102 )
*/
update TblPegawai set jabatan='Staff'where nip='09104'

select*from TblPegawai