-
Notifications
You must be signed in to change notification settings - Fork 0
/
trigger.sql
50 lines (47 loc) · 1.46 KB
/
trigger.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
CREATE OR REPLACE FUNCTION UpdateJumlahPelamar()
RETURNS trigger AS
$$
DECLARE
jml_pelamar integer;
BEGIN
IF(TG_OP = 'INSERT')THEN
SELECT jumlah_pelamar into jml_pelamar
FROM PENERIMAAN_PRODI PR, PENDAFTARAN P
WHERE new.kode_prodi = PR.kode_prodi and
new.id_pendaftaran = P.id and P.nomor_periode = PR.nomor_periode;
IF(jml_pelamar = NULL)THEN
jml_pelamar = 0;
END IF;
UPDATE PENERIMAAN_PRODI PR
SET jumlah_pelamar = jml_pelamar +1
WHERE new.kode_prodi = PR.kode_prodi and
new.id_pendaftaran = PENDAFTARAN.id and
PR.tahun_periode = PENDAFTARAN.tahun_periode;
RETURN new;
ELSIF(TG_OP = 'UPDATE')THEN
UPDATE PENERIMAAN_PRODI PR
SET jumlah_pelamar = jumlah_pelamar +1
WHERE new.kode_prodi = PR.kode_prodi and
new.id_pendaftaran = PENDAFTARAN.id and
PR.tahun_periode = PENDAFTARAN.tahun_periode;
UPDATE PENERIMAAN_PRODI PR
SET jumlah_pelamar = jumlah_pelamar -1
WHERE old.kode_prodi = PR.kode_prodi and
old.id_pendaftaran = PENDAFTARAN.id and
PR.tahun_periode = PENDAFTARAN.tahun_periode;
RETURN new;
ELSIF(TG_OP = 'DELETE')THEN
UPDATE PENERIMAAN_PRODI PR
SET jumlah_pelamar = jumlah_pelamar -1
WHERE old.kode_prodi = PR.kode_prodi and
old.id_pendaftaran = PENDAFTARAN.id and
PR.tahun_periode = PENDAFTARAN.tahun_periode;
RETURN old;
END IF;
END;
$$
LANGUAGE 'plpgsql' VOLATILE;
CREATE TRIGGER UpdateJumlahPelamar
AFTER INSERT OR UPDATE OR DELETE
ON PENDAFTARAN_PRODI
EXECUTE PROCEDURE UpdateJumlahPelamar();