Masino Sinaga

Web Development, PHPMaker, & PHP Report Maker

Anda di sini: Beranda / PHPMaker / Kapan Kita Tidak Mengaktifkan Referential Integrity di Master/Detail PHPMaker?
Menyaring Record Tapi Pengguna Tetap Dapat Melihat Semua Record di PHPMaker
Mudahnya Menambahkan Beberapa Kondisi pada String Filter di PHPMaker

Kapan Kita Tidak Mengaktifkan Referential Integrity di Master/Detail PHPMaker?

Februari 3, 2016 oleh Masino Sinaga 6 Komentar

Ada yang masih ingat dengan artikel saya berjudul Dahsyatnya Referential Integrity pada Master/Detail di Aplikasi Web dari PHPMaker? Sekedar menyegarkan ingatan kita, artikel itu membahas pilihan Referential Integrity yang akan memastikan bahwa data di table Detail tidak dapat ditambah atau diubah jika data tersebut tidak terkait dengan Foreign Key di table Master-nya. Artinya, PHPMaker akan mencegah Pengguna menambah data di table Detail jika tidak mengandung data yang terkait di table Master.

Ternyata tidak selamanya kita harus mengaktifkan pilihan Referential Integrity yang terdapat di bawah pengaturan Master/Detail pada bagian Table setup di project PHPMaker. Ada kalanya kita harus menonaktifkan pilihan ini hanya pada kondisi tertentu. Lho, mengapa begitu? Pasti Anda bertanya demikian (sok tahu, ah!).

Oke, langsung saja. Ternyata kita perlu menonaktifkan pilihan Referential Integrity ini jika:

  1. Table Detail menggunakan field yang bertipe Auto-Increment sebagai Primary Key, dan relasi antara kedua table Master dan Detail tidak menggunakan field Auto-Increment tadi.
  2. Field yang digunakan untuk relasi di table Master menggunakan Lookup Table, sementara field yang digunakan untuk relasi di table Detail tidak menggunakan Lookup Table

Artinya, jika kondisi Nomor 1 DAN Nomor 2 di atas tadi terjadi, maka Aplikasi Web akan menampilkan pesan You cannot add or update a record because the foreign key value does not exist in the master table ‘{nama_master_table}’ ketika Pengguna berusaha menambah data di table Detail.

Paling tidak ini yang terjadi saat salah satu Aplikasi Web yang saya hasilkan menggunakan PHPMaker versi 12.0.6. Ketika pilihan ini diaktifkan di project PHPMaker, maka ketika Pengguna menyimpan data di table Detail melalui Aplikasi Web, maka akan muncul pesan tadi. Tapi yang anehnya, setelah pesan tadi diklik, lalu Pengguna mencoba lagi menyimpan data untuk yang kedua kalinya, maka proses ini berlangsung dengan mulus. Data berhasil disimpan. Sedikit membingungkan memang, ya.

Akhirnya, solusi akhir untuk menghilangkan pesan error tadi sama sekali, saya menonaktifkan pilihan Referential Integrity, lalu generate ulang kembali semua file script. Setelah itu, pesan error benar-benar hilang. Hm…

Analisis sementara saya, jika pilihan Referential Integrity kita aktifkan, maka ketika Pengguna menginput data di table Detail yang nilainya seharusnya berasal dari Lookup Table. Sepertinya data di table Detail tadi tidak bisa otomatis tersimpan karena ID di table Detail tersebut masih belum terbentuk. Baru setelah usaha yang kedua data tersimpan, kemungkinan besar saat itu sistem sudah berhasil mengambil data ID dari table Master. Itulah mengapa pada usaha kedua bisa tersimpan.

Jadi, jika Anda tetap ingin mengaktifkan pilihan Referential Integrity tadi, maka pastikan field yang digunakan untuk relasi di table Detail sudah diset Lookup Table-nya sama seperti field relasi di table Master. Ternyata simpel saja solusinya supaya kita tetap bisa mengaktifkan Referential Integrity, uhuuuiii… 🙂

Ditempatkan di bawah: PHPMaker Ditag dengan:auto increment, Belajar PHPMaker, Master/Detail, PHPMaker Indonesia, Referential Integrity, Tutorial PHPMaker

Masino Sinaga

Web Developer pengguna PHPMaker untuk membangun Aplikasi Web sejak tahun 2004. Sampai sekarang masih aktif dan rajin membagikan pengalamannya menggunakan PHPMaker melalui situs masinosinaga.com dan ilovephpmaker.com.

Menyaring Record Tapi Pengguna Tetap Dapat Melihat Semua Record di PHPMaker
Mudahnya Menambahkan Beberapa Kondisi pada String Filter di PHPMaker

Comments

  1. Irwan mengatakan

    Desember 29, 2017 pada 12:54 pm

    Saya juga ada kasus aneh..
    Kalau sbg administrator bisa add mster detil tp juga pakai user lain jadi muncul pesan error itu..

    Padahal sudah saya kasih hak akses.

    Balas
  2. Nanda mengatakan

    April 26, 2018 pada 10:57 am

    Saya juga mengalami hal sama, (Versi 2018)
    jadi saya punya Tabel {User}, {Master_Jenis_Buku} dan {Detail_Buku}
    {Tabel_User} :
    nik , nama
    001 | Arif
    002 | Budi
    003 | Satria

    {Master_Jenis_Buku} :
    ID | kode_jenis | jenis_buku | user_entry
    1 | A-1 | Komputer | 001
    2 | A-2 | Akuntansi | 001
    3 | A-3 | Politik | 003

    {Detail_Buku }:
    ID | kode_buku | kode_jenis | nama_buku | user_entry
    1 | B1 | A-1 | Pemrograman Web | 001
    2 | B2 | A-3 | Politik bla bla | 001 ==> ERROR

    yang dijadikan Relasi : kode_jenis = kode_jenis . (tabel user tidak jadi bagian dari relasi, namun sbegai rujukan => AutoUpdateValue) untuk ID di kedua tabel AutoIncrement.

    kode_jenis di Tabel Detail Lookup ke kode_jenis Master_Jenis_Buku.
    User_Entry = User yang melakukan Input terhadap Record (menggunakan Auto Update Value => CurrentUserID)

    Permasalahannya :
    Ketika User dengan NIK – 001 (nik = user_entry) melakukan input kode_jenis di Tabel Detail (sementra kode_jenis di Tabel Master hasil input User lain = misal User dengan NIK – 003) akan mengalami pesan Error seperti artikel diatas, namun jika User Administrator engga masalah.

    mohon maaf saya masih belum menemui solusi dengan ini :

    Jadi, jika Anda tetap ingin mengaktifkan pilihan Referential Integrity tadi, maka pastikan field yang digunakan untuk relasi di table Detail sudah diset Lookup Table-nya sama seperti field relasi di table Master. Ternyata simpel saja solusinya supaya kita tetap bisa mengaktifkan Referential Integrity, uhuuuiii… 🙂
    
    

    saya masih belum ada gambaran yang Tabel Master seperti Konsep Tabel saya diatas , harus Set Lookup nya ke tabel mana ?
    maksudnya yang Detail , Lookup nya:
    Detail_Buku.kode_jenis = Master_Jenis_Buku.kode_jenis

    sedangkan yang Master Lookup nya kemana yaa :
    Master_Jenis_Buku.kode_jenis = ….. ?

    Terimakasih

    Balas
    • Masino Sinaga mengatakan

      Mei 2, 2018 pada 10:10 pm

      Master_Jenis_Buku.kode_jenis = … ?

      Ya kan sudah jelas, lookup ke table referensi jenis dong.

      Balas
  3. Nanda mengatakan

    April 26, 2018 pada 11:15 am

    Lanjutan :
    Pengguna saat ini (001) tidak diotorisasi untuk menambahkan record. Penyaringan Master: `kode_jenis`=’A-3′

    Balas
    • Nanda mengatakan

      April 26, 2018 pada 11:17 am

      Saya juga mengalami hal sama, (Versi 2018)
      jadi saya punya Tabel {User}, {Master_Jenis_Buku} dan {Detail_Buku}
      {Tabel_User} :
      nik , nama
      001 | Arif
      002 | Budi
      003 | Satria

      {Master_Jenis_Buku} :
      ID | kode_jenis | jenis_buku | user_entry
      1 | A-1 | Komputer | 001
      2 | A-2 | Akuntansi | 001
      3 | A-3 | Politik | 003

      {Detail_Buku }:
      ID | kode_buku | kode_jenis | nama_buku | user_entry
      1 | B1 | A-1 | Pemrograman Web | 001
      2 | B2 | A-3 | Politik bla bla | 001 ==> ERROR

      yang dijadikan Relasi : kode_jenis = kode_jenis . (tabel user tidak jadi bagian dari relasi, namun sbegai rujukan => AutoUpdateValue) untuk ID di kedua tabel AutoIncrement.

      kode_jenis di Tabel Detail Lookup ke kode_jenis Master_Jenis_Buku.
      User_Entry = User yang melakukan Input terhadap Record (menggunakan Auto Update Value => CurrentUserID)

      Permasalahannya :
      Ketika User dengan NIK – 001 (nik = user_entry) melakukan input kode_jenis di Tabel Detail (sementra kode_jenis di Tabel Master hasil input User lain = misal User dengan NIK – 003) akan mengalami pesan Error seperti artikel diatas, namun jika User Administrator engga masalah.

      mohon maaf saya masih belum menemui solusi dengan ini :

      Jadi, jika Anda tetap ingin mengaktifkan pilihan Referential Integrity tadi, maka pastikan field yang digunakan untuk relasi di table Detail sudah diset Lookup Table-nya sama seperti field relasi di table Master. Ternyata simpel saja solusinya supaya kita tetap bisa mengaktifkan Referential Integrity, uhuuuiii… ??
      
      

      saya masih belum ada gambaran yang Tabel Master seperti Konsep Tabel saya diatas , harus Set Lookup nya ke tabel mana ?
      maksudnya yang Detail , Lookup nya:
      Detail_Buku.kode_jenis = Master_Jenis_Buku.kode_jenis

      sedangkan yang Master Lookup nya kemana yaa :
      Master_Jenis_Buku.kode_jenis = ….. ?

      * Pesan Error :
      Pengguna saat ini (001) tidak diotorisasi untuk menambahkan record. Penyaringan Master: `kode_jenis`=’A-3′

      Terimakasih

      maaf, yg Lanjutan kesimpan terlebih dahulu

      Balas
      • Masino Sinaga mengatakan

        Mei 2, 2018 pada 10:17 pm

        Sudah dijawab di atas.

        Balas

Tinggalkan Balasan Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Pos-pos Terbaru

  • Server Event Page_Render dan Page_Rendering di PHPMaker, Apa Sih Bedanya?
  • Begini Mudahnya Mengubah Judul Browser Secara Dinamis di PHPMaker 2021
  • Solusi Supaya PreviewRow dan PreviewOverlay Bisa Sama-Sama Berfungsi di PHPMaker 2021
  • Jangan Pernah Lagi Mencampur Kode PHP di Client Script atau Startup Script pada PHPMaker 2021
  • Seperti Ini Mudahnya Menyembunyikan Data Label di Chart dari PHPMaker 2021

Menu

  • Siapa Saya?
  • Web Development
  • PHPMaker
  • Umum
  • Syarat dan Ketentuan
  • Sitemap (Peta Situs)
  • Komentar

Komentar Terbaru

  • Masino Sinaga pada Setting Import Data Berikut Wajib Anda Ketahui Bedanya di PHPMaker 2021
  • Masino Sinaga pada Jangan Pernah Lagi Mencampur Kode PHP di Client Script atau Startup Script pada PHPMaker 2021
  • Masino Sinaga pada Mudahnya Menambahkan Global Function untuk Auto-Update Field di PHPMaker
  • Abu Syifa pada Setting Import Data Berikut Wajib Anda Ketahui Bedanya di PHPMaker 2021
  • Abu Syifa pada Jangan Pernah Lagi Mencampur Kode PHP di Client Script atau Startup Script pada PHPMaker 2021

Situs Terkait

  1. I Love PHPMaker
  2. Situs Resmi PHPMaker
  3. Forum Diskusi PHPMaker
  4. PHPMaker di IlmuKomputer.com
  5. PHPMaker Learning

Baru di PHPMaker?

Baca ini terlebih dulu ...

  1. Ayo Menjadi Web Developer yang Cerdas!
  2. PHPMaker: PHP Code Generator + PHP Framework
  3. Pertanyaan-Pertanyaan yang Paling Sering Diajukan Seputar PHPMaker
  4. Tips buat Anda Pemula yang Baru Mengenal dan Menggunakan PHPMaker
  5. Bacalah Help, Bacalah Help, dan Bacalah Help di PHPMaker!

(c) Masino Sinaga 2009 - 2019 | WordPress | Catat masuk | Kembali ke atas