Hai nyoh, udah lama ga nulis sesuatu di blog ini. Sekarang gw mau nulis lagi ah. Berhubung kemarin sore nemu bahan kemarin sore pas temen gw nanya sesuatu. Dialognya kaya gini lah kira-kira:
T = Temen gw
G = Gw yang ganteng :P
T = Oi tong...
G = Apa om???
T = Nanya dong, kalo bikin auto increment di table Oracle kaya gimana sih?
G = Oh gini om caranya... bla bla bla... auuuuuu (ntar gw jelasin dulu)
Sebelumnya apaan sih nyoh yang dimaksud Auto Increment?? Menurut ilmu sotoy gw... auto increment adalah nilai integer/number yang bertambah secara otomatis. Udah jelas kan ada auto artinya otomatis, dan increment artinya bertambah. Hahaha... Biasanya dipakai untuk nilai field di suatu table. Jadi waktu ntu table nambah Rownya, field tersebut ga usah dikasih nilai udah bisa ngisi otomatis nilainya nyoh.
Contoh misalnya kaya gini nih: (nama table misal xxmhs)
|mhs_id | mhs_name |
|=======|==============|
|1 |hiruma111 |
|2 |HiddenSkills |
|3 |kentuy |
|4 |otaknakal |
|5 |taku555 |
Waktu insert record ke table tersebut, mhs_id tidak perlu diisi nilainya. Cukup insert mhs_name aja. Misal sintaxnya gini
Insert into xxmhs (mhs_name) values ('kodok');
Nah kalo ga pake auto increment itu ga bakal bisa keisi nilai mhs_id nya. Kalau udah yang kenal MySQL mungkin sangat mudah buat auto Increment di MySQL. Tinggal kasih sintax auto_increment KEY pada saat tablenya dibuat atau bisa di alter aja tablenya
Contoh di MySQL saat Create Table:
CREATE TABLE xxmhs (
mhs_id INT NULL AUTO_INCREMENT KEY,
mhs_name VARCHAR(200)
);
Trus balik lagi ke pertanyaan, emangnya kalo di Oracle ga bisa nyoh kaya gitu? Dengan rasa berduka dan bersedih, gw jawab tidak bisa... hahaha... (kok ketawa sih?)... Karena gw dah punya solusinya nyoh.. tenang aja...
Ini langkah2nya nyoh:
Create table xxmhs terlebih dahulu.
CREATE TABLE XXMHS
(
mhs_id NUMBER,
mhs_name VARCHAR2(100)
)
Lalu buat sebuah sequence, scriptnya sebagai berikut:
CREATE SEQUENCE XXMHS_SEQ
START WITH 1
INCREMENT BY 1
MINVALUE 0
MAXVALUE 9999999
NOCACHE
NOCYCLE
NOORDER
Sebenarnya ga masalah juga kalo mau buat sequencenya dulu nyoh. Ga ada masalah.
Lalu sekarang kita pasang sequence tersebut ke table yang udah dibuat ataupun table yang akan dibuat. Caranya dengan memasang di trigger table tersebut. Bisa ditaruh di trigger Before Insert pada table tersebut. Scriptnya sebagai berikut:
CREATE OR REPLACE TRIGGER XXMHS_BI
BEFORE INSERT
ON XXMHS
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
tmpVar NUMBER;
BEGIN
tmpVar := 0;
SELECT XXMHS_SQEQ.NEXTVAL INTO tmpVar FROM dual;
:NEW.MHS_ID := tmpVar;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END XXMHS_BI;
/
Jadi deh... Selamat mencoba... semoga membantu dan dapet pahala... amin... hahahaha
Thursday, 14 June 2012
Membuat auto increment di table Oracle
Subscribe to:
Posts (Atom)