CREATE CURSOR Temp2 (No int(10), ItemCode c(20), NamaItem c(80), Satuan c(10), QtyBeli n(10,2),;
Harga n(16,2), Persen n(10,2), Jumlah n(16,2), Expired D(8), QtyShp n(10,2),;
stnbeli c(10), keterangan c(100), qtyord n(10,2), QtyBb n(10,2), QtyBo n(10,2))
Taraaa.. udah jadi
sekarang tinggal kita pakai aja tabel itu layaknya tabel lokal.
gunakan saja :
SELE Temp2
atau
USE Temp2
Kali ini saya akan memberi contoh membuat sebuah Trigger Sederhana menggunakan PostgreSQL
Pertama kita akan buat tabel terlebih dahulu, kita akan buat tabel stokbarang, dan pembelian.
Membuat tabel stokbarang
CREATE TABLE stokbarang(
kode_barang character varying(20) NOT NULL,
nama_barang character varying(30),
stok_ketersediaan integer,
CONSTRAINT stokbarang_pkey PRIMARY KEY (kode_barang)
)WITH (
OIDS=FALSE
);
ALTER TABLE stokbarang OWNER TO postgres;
Membuat table pembelian
CREATE TABLE pembelian(
kode_barang character varying(20),
jumlah_beli integer,
CONSTRAINT pembelian_kode_barang_fkey FOREIGN KEY (kode_barang)
REFERENCES stokbarang (kode_barang) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)WITH (
OIDS=FALSE
);
ALTER TABLE pembelian OWNER TO postgres;
pada 2 tabel diatas sudah di relasikan, kemudian kita buat functionnya.
where
where
Terlihat stok barang yang telah kita masukkan tadi, dengan kode_barang, nama_barang, dan
stok_barang. kedua barang mempunyai stok yang masih utuh ( 50 ).
Selanjutnya masukkan data ke tabel pembelian, kita misalkan ada pembelian membeli barang yang
( kode_barangnya 10023 dan jumlah barang yang dibeli 5 ) , setelah proses insert berhasil maka
trigger akan otomatis berjalan ( memanggil function yang telah dibuat tadi ) , cara kerja function
( mengurangi stok ) dapat dilihat pada penjelasan diatas.
Setelah itu kita lihat apakah trigger kita berhasil memanggil function untuk mengpdate stokbarang
dengan cara ketik SELECT * from stokbarang .
Kita lihat stok_ketersediaan pada kode_barang =10023 berubah menjadi 45 ( hasil dari 50 -5 )
trigger berhasil..
Materi Trigger
Membuat tabel log
rb1=# create table log (process varchar(10), date date);
CREATE TABLE
rb1=# \d log
Table "public.log"
Column |
Type
| Modifiers
a.
| date
create trigger up_data after update on product for each row execute procedure
up_product();
c.
date
---------+-----------insert | 2013-10-23
(1 row)
Join
rb1=> select product.product_name,price_product.price from product left join
price_product on product.product_id=price_product.product_id;
product_name
| price
| 450000
| 460000
| 475000
| 655000
| 555000
| 575000
| 450000
| 420000
| 120000
| 120000
| 150000
| 170000
| 170000
| 180000
| 180000
| 190000
| 110000
| 120000
(22 rows)
B. fungsi string
a.
left
rb1=> select product_name ,left(product_name,5) as hasilpotongkiri from product;
product_name
| hasilpotongkiri
| monit
| monit
| modem
| modem
| modem
| modem
| print
(9 rows)
b. right
rb1=> select product_name ,right(product_name,4) as hasilpotongkanan from product;
product_name
| hasilpotongkanan
| inch
| inch
| 101
| 102
| 103
| C123
| p278
| p999
(9 rows)
c.
lower
rb1=> select product_name ,lower(product_name) as hasillower from product;
product_name
hasillower
(9 rows)
d. upper
rb1=> select product_name ,upper(product_name) as hasilupper from product;
product_name
hasilupper
(9 rows)
e.
substring
rb1=> select product_name ,substring(product_name,10) as hasilsubstring from
product;
product_name
| hasilsubstring
| cer 14 inch
| cer 20 inch
| rra 101
| rra 102
| rra 103
| wei AC123
| anon mp278
| anon mp999
(9 rows)
rb1=> select product_name ,substring(product_name,2,5) as hasilsubstring from
product;
product_name
| hasilsubstring
| onito
| onito
| odem
| odem
| odem
| odem
| rinte
| rinte
(9 rows)
f.
ascii
rb1=> select product_name ,substring(product_name,0,2) as
hasilsubstring,ascii(substring(product_name,0,2)) as hasilascii from product;
product_name
| hasilsubstring | hasilascii
|m
109
|m
109
|m
109
|m
109
|m
109
|m
|p
|
|
|p
112
|
109
109
112
(9 rows)
g. concat
rb1=> select product_id,concat(stock)from price_product where product_id='pr1';
product_id | concat
------------+-------pr1
| 40
pr1
| 60
pr1
| 60
(3 rows)
groupconcat
------------+---------------------pr1
| 450000,460000,475000
(1 row)
C. fungsi date
a.
current date
rb1=> select
current_date;
date
-----------2013-10-09
(1 row)
b. current Time
rb1=> select current_time;
timetz
-------------------15:56:45.025454+07
(1 row)
c.
now
------------------------------2013-10-09 15:58:04.497006+07
(1 row)
d. now
rb1=> select now();
now
------------------------------2013-10-09 15:58:14.453479+07
(1 row)
Latihan .
1. tampilkan semua data product(product_id,product_name,price)
rb1=> select price_product.product_id,product.product_name,price_product.price from product
left join price_product on product.product_id=price_product.product_id;
product_id |
product_name
| price
------------+-------------------------+--------
pr1
| 450000
pr1
| 460000
pr1
| 475000
pr2
| 655000
pr2
| 555000
pr2
| 575000
pr3
pr3
pr3
pr4
| 450000
pr4
| 420000
pr4
| 120000
pr5
| 120000
pr5
| 150000
pr5
| 170000
pr7
| 170000
pr7
| 180000
pr8
| 180000
pr8
| 190000
pr9
| 110000
pr9
| 120000
(22 rows)
2. tampilkan harga product dengan merek modem sierra
rb1=> select price_product.product_id,product.product_name,price_product.price from product
left join price_product on product.product_id=price_product.product_id
where product_name='modem sierra 101';
product_id | product_name | price
------------+------------------+-------pr4
pr4
pr4
(3 rows)
rb1=> select price_product.product_id,product.product_name,price_product.price from product
left join price_product on product.product_id=price_product.product_id
where product_name='modem sierra 102;
product_id | product_name | price
------------+------------------+-------pr5
pr5
pr5
(3 rows)
| stock | price |
date
| 40 | 450000 | 2012-04-04
| 60 | 460000 | 2012-05-14
| 60 | 475000 | 2012-05-20
| 20 | 655000 | 2012-04-05
| 80 | 555000 | 2012-05-05
| 30 | 575000 | 2012-05-24
| 10 | 450000 | 2012-04-01
| 40 | 420000 | 2012-06-01
| 10 | 170000 | 2012-07-14
| 10 | 170000 | 2012-07-14
5 | 180000 | 2012-08-24
15 | 180000 | 2012-07-17
55 | 190000 | 2012-08-17
(16 rows)
4. tampilkan semua nama barang yang mempunyai harga <400000
rb1=> select product.product_name,price_product.price from product left join price_product on
product.product_id=price_product.product_id where price<400000;
product_name
| price
| 120000
| 120000
| 150000
| 170000
| 170000
| 180000
| 180000
| 190000
| 110000
| 120000
(13 rows)
Latihan..
1.
rb1=> select product_id,date,stock from price_product where
product_id='pr1';
product_id |
date | stock
------------+------------+------pr1
| 2012-04-04 |
40
pr1
| 2012-05-14 |
60
pr1
| 2012-05-20 |
60
(3 rows)
2.
rb1=> select product.product_name,price_product.date,price_product.stock from product left
join price_product on product.product_id=price_product.product_id where
product_name='monitor acer 14 inch';
product_name
| date
| stock
40
60
60
(3 rows)
3.
rb1=> select product_name,array_to_string (array(select price from price_product where
product_id='pr1'order by date),',')as stok from product where product_name='monitor acer 14
inch' group by product_id;
product_name
stok
4.
rb1=> select product_name,array_to_string(array(select date from price_product where
product_id='pr8' order by date),',')as tanggal,array_to_string (array(select price from
price_product where product_id='pr8'order by date),',')as stok from product where
product_name='printer canon mp999' group by product_id;
product_name
tanggal
stok
(1 row)
postgres=# \c rb1;
You are now connected to database "rb1" as user "postgres".
rb1=# create schema data;
CREATE SCHEMA
rb1=# alter schema data owner to dani;
ALTER SCHEMA
rb1=# \q
administrator@administrator-desktop:~$ psql rb1 dani
psql.bin (9.2.4)
Type "help" for help.
rb1=> show search_path ;
search_path
---------------"$user",public
(1 row)
rb1=> set search_path to data;
SET
rb1=> show search_path ;
search_path
------------data
(1 row)
rb1=> create table data.product (product_id char(3),product_name varchar(50));
CREATE TABLE
rb1=> \d public.product;
Table "public.product"
Column |
Type
| Modifiers
--------------+-----------------------+----------product_id | character(3)
| not null
product_name | character varying(30) | not null
Indexes:
"product_pkey" PRIMARY KEY, btree (product_id)
Referenced by:
TABLE "public.price_product" CONSTRAINT "price_product_product_id_fkey" FOREIGN KEY
(product_id) REFERENCES public.product(product_id)
Triggers:
del_data AFTER DELETE ON public.product FOR EACH ROW EXECUTE PROCEDURE
public.del_product()
ins_data AFTER INSERT ON public.product FOR EACH ROW EXECUTE PROCEDURE
public.ins_product()
up_data AFTER UPDATE ON public.product FOR EACH ROW EXECUTE PROCEDURE
public.up_product()
rb1=> \d data.product;
Table "data.product"
Column |
Type
| Modifiers
--------------+-----------------------+----------product_id | character(3)
|
product_name | character varying(50) |
rb1=> insert into data.product values ('002','mouse 111');
INSERT 0 1
rb1=> select *from data.product;
product_id | product_name
------------+-------------002
| mouse 111
(1 row)
latihan
administrator@administrator-desktop:~$ psql
psql.bin (9.2.4)
Type "help" for help.
postgres=# \c rb1
You are now connected to database "rb1" as user "postgres".
rb1=# create schema mydata;
CREATE SCHEMA
rb1=# alter schema mydata owner to dani;
ALTER SCHEMA
rb1=# show search_path ;
search_path
---------------"$user",public
(1 row)
rb1=# set search_path to mydata;
SET
rb1=# show search_path ;
search_path
------------mydata
(1 row)
rb1=# create table mydata.price_product(product_id char(3),price int,stock int,date date);
CREATE TABLE
rb1=# \d public.price_product;
Table "public.price_product"
Column | Type | Modifiers
------------+--------------+----------product_id | character(3) |
price
| integer
|
stock
| integer
|
date
| date
|
Foreign-key constraints:
"price_product_product_id_fkey" FOREIGN KEY (product_id) REFERENCES
public.product(product_id)
Triggers:
delete_data AFTER INSERT ON public.price_product FOR EACH ROW EXECUTE
PROCEDURE public.delete_price()
insert_data AFTER INSERT ON public.price_product FOR EACH ROW EXECUTE PROCEDURE
public.insert_price()
update_data AFTER INSERT ON public.price_product FOR EACH ROW EXECUTE
PROCEDURE public.update_price()
rb1=# \d mydata.price_product ;
Table "mydata.price_product"
Column | Type | Modifiers
------------+--------------+----------product_id | character(3) |
price
| integer
|
stock
| integer
|
date
| date
|
\d: extra argument ";" ignored
rb1=# insert into mydata.price_product values ('001',100000,50,'2012-09-21');
INSERT 0 1
rb1=# insert into mydata.price_product values ('002',200000,90,'2012-09-24');
INSERT 0 1
rb1=# insert into mydata.price_product values ('003',400000,40,'2012-12-24');
INSERT 0 1
rb1=# insert into mydata.price_product values ('004',300000,70,'2012-02-14');
INSERT 0 1
rb1=# insert into mydata.price_product values ('005',900000,10,'2012-05-24');
INSERT 0 1
rb1=# select * from mydata.price_product ;
product_id | price | stock | date
------------+--------+-------+-----------001
| 100000 | 50 | 2012-09-21
002
| 200000 | 90 | 2012-09-24
003
| 400000 | 40 | 2012-12-24
004
| 300000 | 70 | 2012-02-14
005
| 900000 | 10 | 2012-05-24
(5 rows)
-----------------------------------------------------------
Keterangan:
TextBox
Text1 untuk kode barang
Text2 untuk nama barang
Text3 untuk jumlah barang
Text4 untuk satuan
CommandButton
Command1 untuk menampilkan data
Command2 untuk menyimpan data
Command3 untuk keluar
Command4 untuk ulang
2. Setelah membuat form seperti di atas, kita masukkan koding yang ada di bawah ini:
Untuk mengkosongkan textbox
Private Sub Command4_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
End Sub
Private Sub Form_Load()
KONEKSI.Open
"Provider=MSDASQL.1;Persist
Source=ODBARANG;Initial Catalog=DBTOKO"
Security
Info=False;Data
End Sub
Untuk menampilkan data
Private Sub Command1_Click()
Dim PARAMETER1 As New ADODB.PARAMETER
Dim COMAND1 As New ADODB.Command
Dim RS1 As New ADODB.Recordset
With COMAND1
.ActiveConnection = KONEKSI
.CommandType = adCmdStoredProc
.CommandText = "TAMPIL"
Set PARAMETER1 = .CreateParameter("KODE_BRG", adVarChar, adParamInput,
20, Text1.Text)
.Parameters.Append PARAMETER1
Set RS1 = .Execute
End With
Text2.Text = RS1.Fields("NAMA_BRG")
Text3.Text = RS1.Fields("JMLH_BRG")
Text4.Text = RS1.Fields("SATUAN")
End Sub
Untuk menginputkan/menyimpan data
Private Sub Command2_Click()
Dim PARAMETER As New ADODB.PARAMETER
Dim COMAND As New ADODB.Command
Dim RS As New ADODB.Recordset
With COMAND
.ActiveConnection = KONEKSI
.CommandType = adCmdStoredProc
.CommandText = "ENTRY"
4. Kita dapat melihat apakah data tersebut sudah tersimpan atau belum dengan membuka
database DBTOKO dengan table BARANG diSQL Server.
A. Rangkuman Materi
a. Join
rb1=> select product.product_name,price_product.price from product left join
price_product on product.product_id=price_product.product_id;
product_name
| price
| 450000
| 460000
| 475000
| 655000
| 555000
| 575000
| 450000
| 420000
| 120000
| 120000
| 150000
| 170000
| 170000
| 180000
| 180000
| 190000
| 110000
| 120000
(22 rows)
B. fungsi string
a. left
rb1=> select product_name ,left(product_name,5) as hasilpotongkiri from product;
product_name
| hasilpotongkiri
| monit
| monit
| modem
| modem
| modem
| modem
| print
b. right
rb1=> select product_name ,right(product_name,4) as hasilpotongkanan from product;
product_name
| hasilpotongkanan
| inch
| inch
| 101
| 102
| 103
| C123
| p278
| p999
(9 rows)
c.
lower
rb1=> select product_name ,lower(product_name) as hasillower from product;
product_name
hasillower
(9 rows)
d. upper
rb1=> select product_name ,upper(product_name) as hasilupper from product;
product_name
hasilupper
(9 rows)
e.
substring
rb1=> select product_name ,substring(product_name,10) as hasilsubstring from
product;
product_name
| hasilsubstring
| cer 14 inch
| cer 20 inch
| rra 101
| rra 102
| rra 103
| wei AC123
| anon mp278
| anon mp999
(9 rows)
rb1=> select product_name ,substring(product_name,2,5) as hasilsubstring from
product;
product_name
| hasilsubstring
| onito
| onito
| odem
| odem
| odem
| odem
| rinte
| rinte
(9 rows)
f.
ascii
rb1=> select product_name ,substring(product_name,0,2) as
hasilsubstring,ascii(substring(product_name,0,2)) as hasilascii from product;
product_name
| hasilsubstring | hasilascii
|m
109
|m
109
|m
109
|m
109
|m
109
|m
|p
|
|
|p
112
|
109
109
112
(9 rows)
g. concat
rb1=> select product_id,concat(stock)from price_product where product_id='pr1';
product_id | concat
------------+-------pr1
| 40
pr1
| 60
pr1
| 60
(3 rows)
groupconcat
------------+----------------------
pr1
| 450000,460000,475000
(1 row)
C. fungsi date
a. current date
rb1=> select
current_date;
date
-----------2013-10-09
(1 row)
b. current Time
rb1=> select current_time;
timetz
-------------------15:56:45.025454+07
(1 row)
c.
d. now
rb1=> select now();
now
------------------------------2013-10-09 15:58:14.453479+07
(1 row)
Latihan .
1. tampilkan semua data product(product_id,product_name,price)
rb1=> select price_product.product_id,product.product_name,price_product.price from product
left join price_product on product.product_id=price_product.product_id;
product_id |
product_name
| price
------------+-------------------------+-------pr1
| monitor acer 14 inch | 450000
pr1
| monitor acer 14 inch | 460000
pr1
| monitor acer 14 inch | 475000
pr2
| monitor acer 20 inch | 655000
pr2
| monitor acer 20 inch | 555000
pr2
| monitor acer 20 inch | 575000
pr3
| monitor samsung 21 inch | 335000
pr3
| monitor samsung 21 inch | 350000
pr3
| monitor samsung 21 inch | 360000
pr4
| modem sierra 101
| 450000
pr4
| modem sierra 101
| 420000
pr4
| modem sierra 101
| 120000
pr5
| modem sierra 102
| 120000
pr5
| modem sierra 102
| 150000
pr5
pr7
pr7
pr8
pr8
pr9
pr9
product_name
| stock | price | date
-------------------------+-------+--------+-----------monitor acer 14 inch | 40 | 450000 | 2012-04-04
monitor acer 14 inch | 60 | 460000 | 2012-05-14
monitor acer 14 inch | 60 | 475000 | 2012-05-20
monitor acer 20 inch | 20 | 655000 | 2012-04-05
monitor acer 20 inch | 80 | 555000 | 2012-05-05
monitor acer 20 inch | 30 | 575000 | 2012-05-24
monitor samsung 21 inch | 110 | 335000 | 2012-04-24
monitor samsung 21 inch | 110 | 350000 | 2012-05-03
monitor samsung 21 inch | 110 | 360000 | 2012-06-04
modem sierra 101
| 10 | 450000 | 2012-04-01
modem sierra 101
| 40 | 420000 | 2012-06-01
modem sierra 102
| 10 | 170000 | 2012-07-14
modem huawei AC123
| 10 | 170000 | 2012-07-14
modem huawei AC123
| 5 | 180000 | 2012-08-24
printer canon mp999 | 15 | 180000 | 2012-07-17
printer canon mp999 | 55 | 190000 | 2012-08-17
(16 rows)
4. tampilkan semua nama barang yang mempunyai harga <400000
rb1=> select product.product_name,price_product.price from product left join price_product on
product.product_id=price_product.product_id where price<400000;
product_name
| price
-------------------------+-------monitor samsung 21 inch | 335000
monitor samsung 21 inch | 350000
monitor samsung 21 inch | 360000
modem sierra 101
| 120000
modem sierra 102
| 120000
modem sierra 102
| 150000
modem sierra 102
| 170000
modem huawei AC123
| 170000
modem huawei AC123
| 180000
printer canon mp999 | 180000
printer canon mp999 | 190000
printer canon mp278 | 110000
| 120000
Latihan..
1.
rb1=> select product_id,date,stock from price_product where
product_id='pr1';
product_id | date | stock
------------+------------+------pr1
| 2012-04-04 | 40
pr1
| 2012-05-14 | 60
pr1
| 2012-05-20 | 60
(3 rows)
2.
rb1=> select product.product_name,price_product.date,price_product.stock from product left
join price_product on product.product_id=price_product.product_id where
product_name='monitor acer 14 inch';
product_name | date | stock
----------------------+------------+------monitor acer 14 inch | 2012-04-04 | 40
monitor acer 14 inch | 2012-05-14 | 60
monitor acer 14 inch | 2012-05-20 | 60
(3 rows)
3.
rb1=> select product_name,array_to_string (array(select price from price_product where
product_id='pr1'order by date),',')as stok from product where product_name='monitor acer 14
inch' group by product_id;
product_name |
stok
----------------------+---------------------monitor acer 14 inch | 450000,460000,475000
(1 row)
4.
1.
Pada system yang didalamnya terdapat bermacam-macam platform bahasa
pemrograman, akan tetapi proses yang terjadi pada database harus tetap memiliki
standard yang sama.
2.
Sistem dikerjakan pada lingkungan yang berbeda-beda dengan prioritas
keamanan yang berbeda sehingga diperlukan pembatasan terhadap hak-hak
penggunaan terhadap tabel-tabel tertentu.
3.
Dengan adanya multi koneksi , maka dengan store procedure akan
memberikan performa yang lebih baik karena proses interkoneksi dari luar server
menjadi lebih sedikit.
4.
Programmer gak perlu pusing melihat bertumpuk-tumpuk tabel karena hanya
memakai prosedur yang sudah ada.
Sedangkan trigger merupakan store procedure yang digunakan untuk memicu perubahan pada suatu
tabel sesuai dengan event yang terjadi (insert, delete, update). Trigger dapat digunakan untuk memicu
proses terhadap tabel lain maupun tabel itu sendiri.
Manfaat dari trigger :
1. Pada pemanfaatan program aplikasi multi platform, proses bisnis dari sistem
dapat dibuat langsung dilakukan didatabase sehingga perbedaan interpretasi di
program aplikasi menjadi lebih diminimalisisr
2.
INSERT INTO dosen (Nip, Nama, Tgl_lahir, Jn_Kelamin, jalan, Kota, jurusan) VALUES
(03002, Diana Ginting,S.Pd.,M.Cs., 1959-06-21, , Jl. Gatot Subroto 89, Jakarta, J03),
(03001, Septian Dwiyanto,S.T.,M.Cs., 1964-03-13, P, Jl. Bulukan 03, Lampung, J03),
(02003, Wahyu Nirba Habibah,S.T., 1963-04-29, , Jl. Mayoret, Bandung, J02),
(02002, Jamalludin,S.T.,M.Kom., 1965-04-12, P, Jl. Jend. Sudirman, Sleman, J02),
(02001, Mahmudin,S.Ag.,M.Kom., 1956-02-01, P, Jl. Disvus 20, Yogyakarta, J02),
(01003, Kitri Sri Rahayu,S.T., 1958-03-14, P, Jl. Mrican 23, Yogyakarta, J01),
(01004, Eko Aribowo,S.T.,M.Kom., 1961-05-13, P, Jl. Mawar 56, Magelang, J01),
(01002, Imana Kusuma,S.T.,M.Kom., 1960-06-20, L, Jl. KOl. Sugiono, Sleman, J01),
(01001, Wahyu Pujiono,S.T.,M.Kom., 1957-09-03, L, Jl. Ambassador, Jakarta, J01),
(03003, Yohanes Surya,S.T., 1960-09-23, P, Jl. Tamantirto, Bantul, J03);
INSERT INTO matakuliah (Kode_mka, Nama, Semester, sks, jenis, dosen) VALUES
(MI01002, Operating System, 1, 2, W, 03004),
(MI01001, Konsep Basis Data, 1, 2, W, 03004),
(IK02004, Basis Data, 2, 3, P, 01001),
(IK02003, Arsitektur Komputer, 2, 2, P, 01004),
(IK02002, Dasar Pemrograman II, 2, 3, W, 01002),
(IK02001, Algoritma Pemrograman, 2, 2, W, 01003),
(IK01004, E-Commerce, 1, 2, P, 01001),
(IK01003, Organisasi Komputer, 1, 2, P, 01004),
(IK01002, Dasar Pemrograman, 1, 3, W, 01003),
(IK01001, Statistika & Probabilitas, 1, 2, W, 01002),
(TI02004, Bahasa Rakitan, 1, 2, P, 02001),
(TI02003, Kalkulus 2, 2, 3, W, 02003),
(TI02002, Sistem Operasi, 2, 2, W, 02002),
(TI02001, Algoritma Dan Pemrograman I, 2, 3, W, 02002),
(TI01004, Matematika Diskrit, 1, 2, W, 02002),
(TI01003, Kalkulus 1, 1, 3, W, 02003),
(TI01002, Aljabar Linear, 1, 3, W, 02001),
(TI01001, Statistik Dasar, 1, 2, W, 02001),
(MI01003, Aljabar Elementer, 1, 2, W, 03003),
(MI01004, Fuzzy Logic, 1, 2, P, 03001),
(MI02001, Teknologi Basis Data, 2, 2, W, 03002),
(MI02002, Sistem Operasi, 2, 2, W, 03001),
(MI02003, Pemrograman Terstruktur, 3, 2, W, 03001),
(MI02004, Web Programming, 2, 3, P, 03003);
INSERT INTO prasyarat (ID_prasyarat, Kode_prasyarat, Kode_mka, Nilai) VALUES
(1, IK02002, IK01002, C),
(2, IK02003, IK01003, C),
(3, MI02004, MI01001, C),
(4, MI02004, MI01002, C);
INSERT INTO kuliah (nilai_angka, nilai_huruf, bobot, Th_akademik, nim, mka) VALUES
(66, B, 3, 20101, 0210003, TI01001),
(50, C, 2, 20101, 0210002, TI01004),
(90, A, 4, 20101, 0210003, TI01003),
, terpaksa bikin 2
end if;
end if;
end if;
end if;
end &&
DELIMITER ;
DELIMITER &&
CREATE TRIGGER insertbobot before insert on kuliah
for each row
begin
if new.nilai_angka < 20 then
set new.bobot = 0;
set new.nilai_huruf=E;
else if new.nilai_angka >= 20 and new.nilai_angka <=40 then
set new.bobot = 1;
set new.nilai_huruf=D;
else if new.nilai_angka >= 41 and new.nilai_angka <=60 then
set new.bobot = 2;
set new.nilai_huruf=C;
else if new.nilai_angka >= 61 and new.nilai_angka <=80 then
set new.bobot = 3;
set new.nilai_huruf=B;
else if new.nilai_angka >= 81 and new.nilai_angka <=100 then
set new.bobot = 4;
set new.nilai_huruf=A;
end if;
end if;
end if;
end if;
end if;
end &&
DELIMITER ;
Untuk mencoba trigger :
UPDATE KULIAH set nilai_angka =60 where nim =0110001 and mka =IK02001 and
th_akademik=20102;
INSERT INTO kuliah (nilai_angka, Th_akademik, nim, mka) VALUES (66, 20102, 010004, TI01004);
B. PROCEDURE
Contoh procedure untuk melakukan cetak KRS, cetak KHS dan melakukan Proses KRS (input KRS) dan
juga Input Nilai.
a) Procedure cetak KRS
DELIMITER &&
CREATE PROCEDURE CetakKRS(nim char(7), ta char(7))
BEGIN
SELECT distinct concat(m.nim ,, m.nama , | TA : , k.th_akademik) as Data Mahasiswa from
mahasiswa m
inner join kuliah k on m.nim = k.nim
where k.nim =nim and k.Th_akademik =ta;
SELECT concat(k.mka , | , mk.nama, ) as Mata Kuliah, d.nama as Dosen, mk.sks as SKS from
kuliah k
inner join matakuliah mk on k.mka = mk.kode_mka
inner join mahasiswa mhs on k.nim = mhs.nim
inner join dosen d on d.nip = mk.dosen
where k.nim = nim and k.Th_akademik = ta;
SELECT Concat(Jumlah SKS = , sum(mk.sks)) as Keterangan from kuliah k
inner join mahasiswa m on k.nim = m.nim
inner join matakuliah mk on k.mka = mk.kode_mka
where k.nim = nim and k.Th_akademik = ta
group by m.nim ;
END &&
DELIMITER ;
b) Procedure cetak KHS
DELIMITER &&
CREATE PROCEDURE CetakKHS(nim char(7), ta char(7))
BEGIN
SELECT distinct concat(m.nim , , m.nama , | TA : , k.th_akademik) as Data Mahasiswa from
mahasiswa m
inner join kuliah k on m.nim = k.nim
where k.nim =nim and k.Th_akademik =ta;
SELECT k.mka, mk.nama, mk.sks, k.nilai_huruf as Nilai, k.bobot, (k.bobot * mk.sks) as bobot (bobot x
sks) from kuliah k
inner join matakuliah mk on k.mka = mk.kode_mka
inner join mahasiswa mhs on k.nim = mhs.nim
where k.nim = nim and k.Th_akademik = ta;
SELECT Concat(Jumlah SKS = , sum(mk.sks)) as Keterangan , (sum(k.bobot * mk.sks)) as Total
Bobot, (sum(k.bobot * mk.sks)/ sum(mk.sks)) as IP
Sementara from kuliah k
inner join mahasiswa m on k.nim = m.nim
inner join matakuliah mk on k.mka = mk.kode_mka
where k.nim = nim and k.Th_akademik = ta
group by m.nim ;
END &&
DELIMITER ;
c) Proses insert dan update tabel kuliah pada trigger diatas dapat juga dijadikan procedure
DELIMITER &&
CREATE PROCEDURE InputKRS(nr char(7), mk char(10), ta char(5))
BEGIN
Insert into kuliah(nim , mka, th_akademik)
values (nr, mk, ta);
END &&
DELIMITER ;
DELIMITER &&
CREATE PROCEDURE InputNilai(nr char(7), mk char(10), ta char(5), nl tinyint)
BEGIN
Update kuliah set nilai_angka = nl
where kuliah.nim =nr and kuliah.mka = mk and kuliah.th_akademik = ta;
END &&
DELIMITER ;
Melihat status dari procedure yang aktif
SHOW PROCEDURE STATUS;
Memanggil Procedure yang sudah dibuat
CALL CETAKKRS(0110001,20102);
CALL CETAKKHS(0110001,20101);