Apakah "id" Primary Key bisa di ubah?

halo gan, saya mau tanya, saya mau ubah "id" primary key kok gak bs ya? atau memang primary key sifatnya tidak bs diubah ya datanya? (btw ubahnya lewat website nya bukan di databse)

avatar dynemix
@dynemix

43 Kontribusi 5 Poin

Diperbarui 4 tahun yang lalu

5 Jawaban:

<div>Bukan nggak bisa, tapi sudah nyangkut atau terhubung ke tabel lain.<br>Misal saya di sekolahkoding punya id user tertentu. Saya sudah tulis beberapa pertanyaan &amp; jawaban (ada tabel pertanyaan dan jawaban dengan id user saya). Kalo id user saya diganti, tabel pertanyaan dan jawaban gak punya id user, yang nulis nanti gak jelas siapa.<br><br>Kenapa id diubah, tabel yg lain gak ikut otomatis? Ya karena memang id itu aslinya tidak boleh diubah, jadi gak ada fitur seperti itu.<br><br>Kalo memang ntah alasan apa harus diubah, triknya bikin id baru dulu. Trus tabel2 yang ngambil foreign key diganti dengan yang baru. Terakhir, hapus id yg lama.</div>

avatar ChronoJava
@ChronoJava

41 Kontribusi 23 Poin

Dipost 4 tahun yang lalu

<div>Oke gan, makasih banget atas penjelasan nya🙏🏻👍, tapi kenapa ya klo ubah "id" nya lewat database nya langsung bisa?</div>

avatar dynemix
@dynemix

43 Kontribusi 5 Poin

Dipost 4 tahun yang lalu

Tanggapan

kok di database langsung bisa? Ada 2 kemungkinan.

  1. Id belum dipanggil di tabel lain. Kalo dalam contoh sebelumnya artinya saya belum pernah nulis di sekolahkoding, jadi belum nyangkut.
  2. Bikinnya gak pake constraint. Artinya bisa jadi ada tulisan tapi gak ada penulisnya, karena id bisa diubah & bahkan dihapus.

Kalo kemungkinannya adalah kemungkinan pertama artinya ada yg bermasalah di webnya. Cuma mungkin kalo pake framework emang udah standarnya gitu kali gan, karena memang aslinya gak boleh diubah.

<div>Iya gan, klo logikanya sih emg "id" itu emg gbs diubah² takutnya ketimpa sama penulis lain (cth kasus yg udh dijelaskan). Kebetulan saya pake laravel yg sistem security nya yg agak"lebay" hehe. Tp feeling saya sih yg agan bilang trakhir tadi "mungkin framework standarnya memang "id" nya gak boleh diubah", kecuali klo mau "cheating" bisa langsung masuk ke database. Oke deh gan makasih bgt info nya ya 🙏🏻👍</div>

avatar dynemix
@dynemix

43 Kontribusi 5 Poin

Dipost 4 tahun yang lalu

<div>Di database ada istilah CASCADE.&nbsp;<br>kamu bisa menentukan kalau id tersebut ON CASCADE saat di update atau saat dihapus.<br>Secara otomatis dia akan mencari di table lain, yang punya refrensi ke id tersebut dan mengubahnya.<br><br>contoh on UPDATE CASCADE:</div><pre>ALTER TABLE books ADD CONSTRAINT fk_books_warehouses_warehouse_id FOREIGN KEY (warehouse_id) REFERENCES warehouses (id) <strong>ON UPDATE CASCADE;</strong></pre><div><br>Untuk framework seperti laravel juga ada, digunakan saat migration table<br><br>contoh on DELETE cascade di laravel<br><br></div><pre>$table-&gt;foreignId('user_id') -&gt;constrained() -&gt;onDelete('cascade')</pre><div>silahkan cek <a href="https://laravel.com/docs/8.x/migrations">dokumentasi migration laravel</a> untuk lebih detail</div>

avatar hilmanski
@hilmanski

2686 Kontribusi 2135 Poin

Dipost 4 tahun yang lalu

<div>sudah saya kasih cascade gan, ON UPDATE CASCADE dan ON DELETE CASCADE<br><br>tapi yg berfungsi cmn yg delete gan, apa gara2 dia PK makanya tidak bisa diubah ya? takutnya kan klo untuk pekerjaan masa depan bisa ketimpa (cth: id=50, mau saya ubah jadi id=51, sedangkan id=51 sudah ada datanya.)tp untuk kasus saya id=51 blm ada datanya, logikanya kan bisa buat update ke id=51 ya?</div>

avatar dynemix
@dynemix

43 Kontribusi 5 Poin

Dipost 4 tahun yang lalu

Login untuk ikut Jawaban