Thursday, December 11, 2025

.::: Simulation create view with additional ID Unique row_number(),hash /md5 & Primary Key in Oracle :::.

 

1. Buat Tabel dengan tanggal_lahir
CREATE TABLE karyawan (
    emp_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    nama VARCHAR2(100),
    jabatan VARCHAR2(100),
    lokasi VARCHAR2(100),
    tanggal_lahir DATE
);


2. Insert Data Sample (dengan tanggal lahir)

Saya isi tanggal lahir contoh yang wajar:

INSERT INTO karyawan (nama, jabatan, lokasi, tanggal_lahir)
VALUES ('Andi', 'Staff IT', 'Jakarta', DATE '1990-05-12');

INSERT INTO karyawan (nama, jabatan, lokasi, tanggal_lahir)
VALUES ('Sinta', 'HRD', 'Bandung', DATE '1992-11-03');

INSERT INTO karyawan (nama, jabatan, lokasi, tanggal_lahir)
VALUES ('Budi', 'Finance', 'Surabaya', DATE '1988-07-21');

INSERT INTO karyawan (nama, jabatan, lokasi, tanggal_lahir)
VALUES ('Ratna', 'Manager', 'Jakarta', DATE '1985-03-10');

3. Tes Hasil
SELECT * FROM karyawan;
 


4. using ROW_NUMBER()

CREATE OR REPLACE VIEW v_with_id AS
SELECT
    ROW_NUMBER() OVER (ORDER BY nama) AS id,
    nama,
    lokasi,
    jabatan
FROM karyawan;

select * from v_with_id;

 


5. using primary key ID Stabil (Konstan)

CREATE OR REPLACE VIEW v_with_id_pk AS
SELECT
    emp_id AS id,
    nama,
    jabatan
FROM karyawan;

select * from v_with_id_pk;
 


6. using MD5/UUID

CREATE OR REPLACE FUNCTION md5_hash(p_text VARCHAR2)
RETURN VARCHAR2
DETERMINISTIC
AS
    l_raw RAW(2000);
BEGIN
    l_raw :=
        DBMS_CRYPTO.HASH(
            UTL_RAW.CAST_TO_RAW(p_text),
            DBMS_CRYPTO.HASH_MD5
        );

    RETURN LOWER(RAWTOHEX(l_raw));
END;
/

CREATE OR REPLACE VIEW v_with_id_hash AS
SELECT
    md5_hash(nama || '-' || TO_CHAR(tanggal_lahir, 'YYYY-MM-DD')) AS id,
    nama,
    tanggal_lahir,
    jabatan
FROM karyawan;

select * from v_with_id_hash;
 

 

No comments:

Post a Comment

Popular Posts